けいじゅ@日本ラショナルソフトウェアです. In [ruby-list :06811 ] the message: "[ruby-list:6811] Re: Mutex/ConditionVariable/Queue ", on Feb/27 15:49(JST) Shugo Maeda writes: >前田です。 >|>|それもありますが. 本来必要のない実装がMutexに入り込んでいますよね. >|>たしかにMutexだけ使ってConditionVariableを使わない人にとっては >|>必要ないですね。 >|>Mutexじゃなくて別のクラス名にした方がよいのかな...。 >|ですかねえ... > >考えてみたんですけどMixinにしようかなと思います。 つまり, 本家Mutexとは別クラスにするという話ですね? >obj.extend(MonitorMixin) # monitorかmoniterかどっちでしたっけ?(^^; >cond = obj.condition_variable # ConditionVariableを生成 > >Thread.start { > obj.synchronize { > ... > cond.wait > } >} > >... >obj.synchronize { > ... > cond.signal >} > >これだとJavaと違って、ロックはリソースに統合されてますけど >条件変数の方は複数にできますよね。 >synchronizeはネストできるようにしないと不便そうですね。 かもしれませんね. @ownerがあるのでそんなに難しくないですよね? リクエスト: 1. extendだけでなく, includeでも使えるようにしてください. 2. ConditionVariable#wait while 条件 cond.wait end という使い方が多いのでしたら, イテレータもあるといいかも. 1.1b9からつ かえる cond.while{条件} or cond.until{条件} がいいかな(^^;;; # extendableにするという話でしたが, 私除経験からだと結構いろいろ対応し # なくてはいけないので(Mutex_m/Sync_m)結構大きくなるかも, すると # thread.rbに統合するのは無理があるかも? PS. Queue/SizedQueueの実装がずいぶん簡単になるなと感心してしまいました. 特 に, あんなに苦労したSizedQueue#max= があんなに簡単になったのは感動しま した. __ ................................石塚 圭樹@日本ラショナルソフトェア... ----------------------------------->> e-mail: keiju / rational.com <<---