咳@勉強不足です。
>> |:ConditionVariable のwaitメソッドの引数 mutex は
>> |:どう使えばよいのでしょうか?
>> |:なにかサンプルスクリプトはないでしょうか?
>> |こんな感じでしょうか?
前> そんな感じです。(いいかげんな答ですいません(^_^;)
やっぱりそんな感じだったのか‥。
遠いむかし、UNIXのデバイスドライバを読んでいた頃の記憶を掘り起こして
勘で書きました。
例題はMINIX本のモニタのあたりのまねです。
Message-Id: <199905240737.QAA07643 / blade.nagaokaut.ac.jp>
原> # synchronize を使わないのは何か理由があるんですか?
こっちは意図して書きました。
@full.wait(@mutex) で unlock/lock するのを強調するつもりで
synchronize を使わなかったんです。
>> ConditionVariable#wait(mutex) ってのも分かりにくいですね。
>> この mutex ってロックするために渡すのではなく、一時的に解
>> 放してもらうためにあるんですね。
>>
>> ところでなんでこんな仕様になっているんですかね。そもそも
>> wait とか stop とかは dead lock になる可能性があるので、
>> 必ず注意が必要なのだから、むしろその部分はユーザーまかせ
>> ていいのではないでしょうか。わざわざ指定するのは注意の喚
>> 起のため?
前> というかpthreadなどに合わせただけです。
7年くらい前に pthread のマニュアルを和訳したときのメモを読んで
みました。boadcast もあるし pthread の状態変数と同じなんですね。
「pthread」と同じ、とわかってしまえば今のままの仕様が好きです。
よりRuby風のものや、モニタ風のものはこれをもとに作れそうなので。
ところで、
thread.rb を読んでいると、同期のしかけを自分でつくれそうな
気がしてきますね。
Java の synchronize するメソッド(?)みたいのもできそう。
Mutexのようなモジュールを書いて mix-in すればできないかな。
咳