たけ(tk)です

次のようなスクリプトを何回か実行すると、cnt の値が200未満になることがあ
ります。

自己代入演算子(cnt+=1)の実行中にはスレッドが切り替わらないようにはできま
せんでしょうか?

----
cnt1=cnt2=cnt = 0
t1 = Thread.new{100.times{cnt1+=1; cnt+=1; p [:th1,cnt1,cnt]; sleep(0.01)}}
t2 = Thread.new{100.times{cnt2+=1; cnt+=1; p [:th2,cnt2,cnt]; sleep(0.01)}}
sleep(5)
----
##[:th2, 99, 196]
##[:th1, 99, 197]
##[:th2, 100, 198]
##[:th1, 100, 199]

Take_tk = KUMAGAI Hidetake
たけ(tk)=熊谷秀武