最近和NASA合作关于realtime java和Java path founder的项目。他们在考虑把java搞到下一代导弹上面。当然不是普通的java,不过也差不多哇。这几天我要做的是实现一种线程的模拟,具体是用一种叫做DES discrete event simulation的东西来模拟。
DES模拟是把线程模拟成event,这个event包含至少2个因素:1)thread itself  2)线程必须被触发的时间  (比如说几分几秒一定要把导弹推进器卸载掉一个)上面是背景;
下面是问题:我可以把event按照某一种方法分类  成为若干eventList  比如eventList1  eventList2然后我想把每个eventList绑定到或者虚拟绑定到某一个CPU,让CPU1只执行eventList1 而从不执行eventList2里面的东西event 可以看成是一个thread请问到底有没有什么好办法?  当然我知道所有的thread都是application 级别的封装我不想改太多的代码  所以如果谁有什么好办法  那就太好了哇 谢谢啊 谢谢谢谢再谢谢

解决方案 »

  1.   

    是否需要开发定制的JVM???
      

  2.   

    NASA 美国国家航空航天局?
    我不得不佩服lz啊
      

  3.   

    如果jvm使用Green Thread Model,那么就是由jvm自己来调度线程,而不是将java线程对应到操作系统线程,这种模型下,对于操作系统来说,只有一个线程,而对于java应用来说,则有多个线程,就根本没法控制的
      

  4.   

    Mark一下,这个有点意思
    估计需要JVM的改进,除了能识别多CPU系统的各个CPU,还要让不同的CPU能分别处理不同的内存段
    就算是采用标识互斥机制,也需要获得相应的硬件信息,目前的java可能有点难度,再想想看有什么变相的方法
      

  5.   

    NASA
    楼主厉害
    一个,关注更新
      

  6.   

    楼主和NASA合作合作,好厉害,不过把java安装到导弹里面,那么导弹里就得存jre,要多少空间啊,再跑个jvm,要多少内存,......
    还是这些都重新做了精简?........
      

  7.   

    java 最初就是应用在 NASA 的项目上的。
      

  8.   

    初次见这种问题,建议拜访java之父
      

  9.   

    java 嵌C 嵌汇编 啊啊啊
      

  10.   

    错,Green Thread Model一般会产生是两个操作系统线程。
      

  11.   

    个人了解是Java中线程的一大好处就是不用知道运行在一个还是多个CPU上,建立了一种透明的编程方法;
    其次操作系统的线程调度机制也是非确定性的;不过楼主的问题中说要隔离执行,可以建立两个SingleThreadExecutor,一个用来执行eventList1中的任务,一个用来执行eventList2中的任务,而且互不相干,每个SingleThreadExecutor中的任务一个接一个的执行完成,这样是否模拟出来像似一个CPU执行一个任务列表;
      

  12.   

    其实  我现在的方法是这样的。1. 在每个realtime thread中增加一个属性 processor 虚拟绑定某一个processor。这个虚拟的意思就是说,感觉这个thread每次执行都在某一个固定的processor上。但其实不是,只是一种simulation。2. eventList中pop每一个event的时候,advance processor time,设成这个event的schedulingTime。这样一来,对所有的thread来说,他们只能看见他们自己的那个processor,从时间的角度。In short, this approach is called distributed discrete event simulation using multiple event lists.基本就这样  汗 献丑了