From: matz@... (Yukihiro Matsumoto) Date: 1997-01-17T11:00:14+09:00 Subject: [ruby-list:1739] Re: [Q] Use of Thread and Mutex まつもと ゆきひろです In message "[ruby-list:1732] Re: [Q] Use of Thread and Mutex" on 97/01/16, sinara@blade.nagaokaut.ac.jp writes: |無意識のうちに「原です。」を避けてるのでは?:-) そんなこたあないです.原さんには感謝してますです,ハイ. |ところで、class Queue の pop ですが、パッチでは Thread.stop の |後で @que.shift を入れるのを忘れています。直すとこんな感じかな。 確かに. |これでも、 | | return @que.shift if @que.length > 0 |と | @waiting.push Thread.current | |の間で他の thread の Queue#push が動いたら run してもらえなくて |困る気がしますが。 それもそうですね.やはり難しい.こうしてみました. def pop non_block=FALSE Thread.exclusive do return @que.shift if @que.length > 0 raise ThreadError, "queue empty" if non_block @waiting.push Thread.current end Thread.stop @que.shift end これでもpushからstopの間にrunされたらまずいんですけど…. # なんか本質的に書き換えが必要な気もしてきた…. # 勉強しなおそう. まつもと ゆきひろ /:|)