【发布时间】:2012-10-27 18:03:09
【问题描述】:
我有 100-1000 个线程正在运行(或更多)。 这些线程中的每一个都应该在完全相同的时刻(尽可能准确)执行特定的方法。
我能想到的唯一解决方案是让每个线程为某个时间戳的差异而休眠,但是sleep() 并不那么准确。
我也在考虑改用EventMachine 和EventMachine::Timer,但这似乎更不可靠和准确。
你会使用什么技术来达到最好的效果?
【问题讨论】:
-
Stack Overflow 上的习惯做法是展示您为解决问题而编写的代码示例。这样,我们可以帮助您修复代码,而不是为您编写代码。照原样,您的问题可能会与“非建设性”或“不是真正的问题”审查员发生冲突。
-
还指定使用的 Ruby 版本和线程模型。 Green 线程和 Native 线程之间是有区别的。虽然,最终时间和准确性(或缺乏)归结为调度程序和负载..
-
线程是不是这里的理想方法?
-
你不能用 ruby 做你正在尝试的事情。至少在需要高精度的情况下。 Ruby 不适合实时应用程序并且不具备真正的线程并发性(有一个 GIL,Global Interpreter Lock,防止多个同时运行的线程同时运行 ruby 代码)。
-
只想提一下,从 1000 个线程“相同”的时间运行一种方法需要 1000 个硬件线程!!!
标签: ruby timer sleep precision