From: shugo@... (Shugo Maeda) Date: 1998-02-25T14:00:52+09:00 Subject: [ruby-list:6747] Re: Mutex/ConditionVariable/Queue 前田です。 In message "[ruby-list:6746] Re: Mutex/ConditionVariable/Queue" 石塚圭樹 wrote: |>今JavaでMutexとConditionVariableを作っているのですが、Rubyでも |>使えると便利かなと思って作ってみました。 | |ConditionVariableってどんなクラスなんですか? ソースを読んでも意図がい |まいち良くわからないもので... すみません、fj.comp.parallelでスレッドライブラリではMutexと ConditionVariableを使うのが一般的だと書いてあったので、そうな のかと思って説明をしてませんでした。 # 僕もそれまで知らなかったのですが(^^; ConditionVariableはある状態が満たされるまで一時的にロックを解放して 条件が見たされるまで待機させるためのクラスです。 mutex = Mutex.new c = ConditionVariable.new Thread.start { mutex.synchronize { ... while (条件が満たされない) cond.wait(m) end ... } } あるスレッドでこのように途中である条件が満たされるまでスレッドを 止めて、他のスレッドで Thread.start { m.synchronize { # 上の条件を満たすための操作 cond.signal } } として、元の操作を実行させる、というような使い方をします。 MutexとConditionVariableを使えば、thread.rbのようにスレッドを 直接操作しなくてもよいので楽になると思います。 -- 前田 修吾