前田です。

At Mon, 24 May 1999 16:36:37 +0900,
Shin-ichiro Hara <sinara / blade.nagaokaut.ac.jp> wrote:
> |:ConditionVariable のwaitメソッドの引数 mutex は
> |:どう使えばよいのでしょうか?
> |:なにかサンプルスクリプトはないでしょうか?
> |
> |こんな感じでしょうか?

そんな感じです。(いいかげんな答ですいません(^_^;)

> ConditionVariable#wait(mutex) ってのも分かりにくいですね。
> この mutex ってロックするために渡すのではなく、一時的に解
> 放してもらうためにあるんですね。
> 
> ところでなんでこんな仕様になっているんですかね。そもそも
> wait とか stop とかは dead lock になる可能性があるので、
> 必ず注意が必要なのだから、むしろその部分はユーザーまかせ
> ていいのではないでしょうか。わざわざ指定するのは注意の喚
> 起のため?

というかpthreadなどに合わせただけです。

そもそも条件変数は特定のロックとセットで使うものなので、

cond = ConditionVariable.new(mutex)

のように生成時に指定するようにした方がいいかもしれません。
# monitor.rbの方はそれに近いですね。

でも、ロックの解放をユーザまかせにするのはあまりスマートではない
ような気がします。
ロックの解放と再獲得を自動的にやってくれるのは条件変数の肝の部分
だと思うので。

-- 
前田 修吾