概要
Thread
詳細
RubyでThreadを扱う方法について。
RubyでThreadを扱う場合はThreadクラスを利用します。
ブロック付きでThreadのインスタンスを生成すると、ブロック内の処理を行う
スレッドが生成されます。
複数のスレッドを生成した場合に、一部のスレッドの例外終了によって他のスレッドも
終了しないようにするためにはThread#joinで待機します。
Mutex#synchronizeはJavaのsynchronizedブロック同様です。
サンプルコード
def inc(total, add) total + add end mutex=Mutex.new threads=(1..10).map do |outer_count| Thread.new do total=0 1_000.times do mutex.synchronize {total=inc(total, outer_count)} end puts total end end threads.each(&:join)
出力
1000 2000 3000 4000 5000 6000 7000 8000 9000 10000