Rubyでスレッドの同時実行数を制限します。 カウンティングセマフォを使えば良いのですが、標準添付ライブラリには入ってない(多分)ので、実装します。 素直にやるとこういう感じ -> rubyでカウンティングセマフォ カウンタとMutexを用意して、カウンタが0の時に待つ機構を作って…と、割とめんどくさいことをしないといけません。 シンプルに 標準添付ライブラリのQueueを使えばこれらの処理がサクッと実装できちゃいます。 require 'thread' locks = Queue.new 2.times { locks.push :lock } Array.new(10) do |i| Thread.new do lock = locks.pop print "#{i}\n" sleep 2 locks.push lock end end.each(&:join) このコードでは10スレ