Why doesn't Ruby have a ThreadPool built-in?

前端 未结 3 756
隐瞒了意图╮
隐瞒了意图╮ 2021-02-03 13:38

I have a program that creates 10000 threads at once, and runs 8 at the same time.

But ruby doesn\'t have a ThreadPool built-in as Java. Is there a good reason?

相关标签:
3条回答
  • 2021-02-03 14:06

    probably because it's easy to roll your own using the standard library "Queue" class.

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

    It's a good question though--I might suggest bringing it up with Ruby Core.

    0 讨论(0)
  • 2021-02-03 14:13

    Most likely the reason is because ruby doesn't have "real" threads. It has what are called Green threads. The ruby interpreter takes care of scheduling execution threads without using any underlying OS threads. This effectively makes Ruby single threaded.

    0 讨论(0)
  • 2021-02-03 14:23

    My suspicion would be it's because a ThreadPool wouldn't be that useful in C-based implementations of Ruby. You can use only one processor at a time with Matz's Ruby Intepreter or Yet Another Ruby VM.

    If you want multiple threads to be run on multiple processors, you need to use JRuby instead.

    0 讨论(0)
提交回复
热议问题