前田です。 In message "[ruby-list:6796] Re: Mutex/ConditionVariable/Queue" 石塚圭樹 <keiju / Rational.Com> wrote: |それもありますが. 本来必要のない実装がMutexに入り込んでいますよね. たしかにMutexだけ使ってConditionVariableを使わない人にとっては 必要ないですね。 Mutexじゃなくて別のクラス名にした方がよいのかな...。 # Mutexだけ使いたい場合はSyncronizerを使った方が共有ロックやネストが # できて便利だからそっちを使うことにするとか(^^; |この場合は, MutexのサブクラスとしてConditionVariableに必要な機能を持つ |ものを実装した方が良くないでしょうか? すると, Mutex#__cond_lock -> |ConditionMutex#lock となって気持ち良くoverloadできますしね. | |ついでに, そのサブクラスをConditionVariableのスコープに入れてしまいま |す. | |さらに, ConditionVariable.newでmutexを渡すようになっていますが, 外部か |ら渡した方が良いんですかね? 勝手に必要がないとしてinitializeの中に組み |込んでみました. リソースが一つで条件が複数の場合、一つのMutexに対して複数のCondition Variableを使いたいケースがあるんです。 # もともとJavaだとリソースと排他制御と条件変数が統合されていてこれができ # ないので、Mutex/ConditionVariableを作ってみよう、という話の流れでした。 だからMutexをConditionVariableに組み込むのはちょっとまずいと思います。 -- 前田 修吾