我有一个程序,一次性创建了10000个线程,并同时运行8个线程。
但是Ruby没有像Java那样内置线程池。这是有充分的理由吗?
但是Ruby没有像Java那样内置线程池。这是有充分的理由吗?
可能是因为使用标准库中的 "Queue" 类很容易自己实现。
q = Queue.new
3.times { Thread.new { while something = q.pop(true) rescue nil; ... }
不过这是一个好问题,我建议你将其提出给Ruby核心团队。
很可能的原因是因为Ruby没有“真正”的线程。它拥有所谓的绿色线程。Ruby解释器负责调度执行线程,而不使用任何底层操作系统线程。这实际上使得Ruby是单线程的。