前田です。

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に組み込むのはちょっとまずいと思います。

-- 
前田 修吾