为什么Ruby没有内置的ThreadPool?

时间:2010-10-01 15:41:47

标签: ruby threadpool

我有一个程序可以同时创建10000个线程,并且同时运行8个。

但是ruby没有像Java那样内置的ThreadPool。有充分的理由吗?

3 个答案:

答案 0 :(得分:20)

可能是因为使用标准库“Queue”类很容易自己滚动。

q = Queue.new
3.times { Thread.new {  while something = q.pop(true) rescue nil; ... }

这是一个很好的问题 - 我可能会建议使用Ruby Core。

答案 1 :(得分:3)

我怀疑是因为ThreadPool在基于C语言的Ruby实现中不会那么有用。您可以使用Matz的Ruby Intepreter或Yet Another Ruby VM一次只使用一个处理器。

如果要在多个处理器上运行多个线程,则需要使用JRuby。

答案 2 :(得分:2)

最有可能的原因是因为ruby没有“真正的”线程。它有所谓的绿色线程。 ruby解释器负责调度执行线程,而不使用任何底层OS线程。这有效地使Ruby单线程。