dreamedge.net

Rubyでスレッドを使う

2008-12-16T15:25:00+0000

Thread.newでスレッドが作れる.

aThread = Thread.new(3){|i| sleep(i)}

スレッドの終了を待つには,aThread.joinをする.

aThread = Thread.new(3){|i| sleep(i); Thread.current['data'] = i}
p aThread['data'] => nil
aThread.join
p aThread['data'] => 3

aThread[‘key’]を設定することでスレッド内での変数を外部から参照できるようになる.

現状のRubyにおけるスレッドは,1プロセス内で時分割してスレッド化しているような感じ.
なので一般的な意味でスレッドを切って処理したければ,dRuby経由で処理を呼び出すとかの工夫が必須.