# list0703.rb

require 'thread'

mem = 0              # 子スレッドで共有して使う変数

t1 = Thread::fork{   # 1つ目の子スレッドが1000回だけ2を足す
  1000.times{
      x = mem
      sleep(0.01)    # 違いを出すため
      mem = x + 2
  }
}

t2 = Thread::fork{   # 2つ目の子スレッドも1000回だけ1を足す
  1000.times{
      y = mem
      sleep(0.01)
      mem = y + 1
  }
}

t1.join              # 1つ目の子スレッドの終了を待つ
t2.join		     # 2つ目の子スレッドの終了を待つ
puts mem	     # 無事 mem = 3000 になるか?