如何确保 N 个线程以大致相同的速度运行?
我正在考虑编写一个物理模拟软件,其中每个物理元素都将在自己的线程中进行模拟。
这种方法有几个优点。从概念上讲,它将非常接近现实世界的运作方式。将系统扩展到多台计算机会容易得多。
但是,为了做到这一点,我需要确保所有线程都以相同的速度运行,并对“相同”进行相当自由的解释。说在彼此的1%以内。
这就是为什么我不一定需要一个类似Thread.join()的解决方案。我不想要一些超级控制的学校情妇,确保所有线程定期彼此同步。我只需要能够要求运行时(无论它是什么---Java,Erlang或任何最适合这个问题的东西)以或多或少相等的速度运行线程。
任何建议将不胜感激。
更新 2009-03-16
我要感谢所有回答这个问题的人,特别是所有那些答案基本上是“不要这样做”的人。多亏了大家的评论,我现在更好地理解了我的问题,我不太确定我应该继续我原计划。然而,我觉得彼得的回答是这个问题本身的最好答案,这就是为什么我接受了它。