代码之家  ›  专栏  ›  技术社区  ›  Cheng

为什么Ruby没有内置线程池?

  •  7
  • Cheng  · 技术社区  · 14 年前

    3 回复  |  直到 14 年前
        1
  •  2
  •   Andrew Grimm atk    14 年前

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

        2
  •  20
  •   rogerdpack    14 年前

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

    不过,这是个好问题——我可能建议用Ruby Core来解决。

        3
  •  3
  •   Andrew Grimm atk    14 年前

    我怀疑是因为线程池在基于C的Ruby实现中没有那么大的用处。在Matz的Ruby Intepreter或另一个Ruby VM中,一次只能使用一个处理器。