Rubyスクリプトでスレッドプールを使いたかったので調べてみた。 スレッドプールの実装 Rubyクックブックに載っているmutexを使ったコードより、d:id:gioext:20081218:1229617888にあるblocking queueの方がスマートに見えたので、これをベースにshutdownを明示しなくてすむように、ちょっと弄ったコードを使うことにした。 require 'thread' class Thread class Pool def initialize(size, &session) @size = size @queue = Queue.new @threads = [] session.call(self) ensure shutdown end def run(&job) @queue.push(job) @threads << create_thread i