views:

80

answers:

2

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?

+1  A: 

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.

rogerdpack
+1  A: 

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.

Andrew Grimm
Exactly. Thread pool, green threads, pointless.
Joshua