お仕事で、数百台のサーバに対して、多少時間のかかる処理をする必要があった。
1 つずつ実行していては、さすがに日が暮れてしまう。
そうなるとスレッドで並列実行したいが、対象のサーバの分、数百個スレッドを生成すると逆に重くなってしまう。
というわけで、スレッド数に上限を設けて実行した、という話。
雛形はこんな感じ。
#!/usr/bin/ruby -Ku
# -*- coding: utf-8 -*-
#
# 20120619
# thread template
#
require 'thread'
def job(arg)
  sleep rand(0)
  print "#{arg}\n"
end
def main
  # スレッド数上限
  thread_max = 3
  # キュー
  jobqueue