コピペコードで快適生活

明日使えるソースを自分のために

RubyのThreadメモ

まずは超簡単なところから。

n = 1

# この記述に至った時点で非同期で実行開始される
t1 = Thread.new do
  puts "t1 start"
  puts "t1 n is #{n}"
  n = 2
  sleep 5
  puts "t1 end"
end

t2 = Thread.new do
  puts "t2 start"
  sleep 5
  puts "t2 n is #{n}"
  # => 2 スレッド間で変数は共有される
  puts "t2 end"
end

# joinメソッドを呼ぶと、
# スレッドの処理が終了するまで以下の処理が実行されない
t1.join
t2.join