Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > monitorライブラリ > MonitorMixin::ConditionVariableクラス
クラスの継承リスト: MonitorMixin::ConditionVariable < Object < Kernel
MonitorMixin と Monitor のための 条件変数クラスです。 MonitorMixin#new_cond が返します。ユーザが MonitorMixin::ConditionVariable.new を直接呼ぶことはありません。
broadcast -> ()
[permalink][rdoc]その条件変数で 待っている全てのスレッドの実行を再開します。
[SEE_ALSO] MonitorMixin::ConditionVariable#signal
count_waiters -> Integer
[permalink][rdoc]その条件変数で待っているスレッドの数を返します。
signal -> ()
[permalink][rdoc]その条件変数で待っているスレッドがあれば実行を再開させます。
複数のスレッドが待っている場合には1つのスレッドのみ 実行を再開します。
[SEE_ALSO] MonitorMixin::ConditionVariable#broadcast
wait(timeout = nil) -> bool
[permalink][rdoc]モニタのロックを開放し、現在のスレッドを停止します。
これを呼ぶスレッドはモニタのロックを保持している必要があります。
MonitorMixin::ConditionVariable#signal や MonitorMixin::ConditionVariable#broadcast で起こされるまでスレッドは停止し続けます。
timeout を与えた場合は最大 timeout 秒まで停止した後にスレッドを 再開します。
実行を再開したスレッドはモニタのロックを保持した状態になります。 これによって危険領域(critical section)上で動作している スレッドはただ一つになり、排他を実現します。
true を返します。timeout が与えられていて待ち時間が timeout を 越えた場合は false を返します。
[SEE_ALSO] MonitorMixin::ConditionVariable#wait_while, MonitorMixin::ConditionVariable#wait_until
wait_until { ... } -> ()
[permalink][rdoc]モニタのロックを開放し、現在のスレッドを ブロックで指定した条件を満たすまで停止します。
MonitorMixin::ConditionVariable#signal や MonitorMixin::ConditionVariable#broadcast で スレッドが起こされると、ロックを取得し、ブロックを評価し その結果によってこのメソッドから抜け処理を継続するか 再びロックを開放しスレッドを停止するかを決めます。
[SEE_ALSO] MonitorMixin::ConditionVariable#wait
wait_while { ... } -> ()
[permalink][rdoc]モニタのロックを開放し、現在のスレッドを ブロックで指定した条件を満たしている間停止します。
MonitorMixin::ConditionVariable#signal や MonitorMixin::ConditionVariable#broadcast で スレッドが起こされると、ロックを取得し、ブロックを評価し その結果によってこのメソッドから抜け処理を継続するか 再びロックを開放しスレッドを停止するかを決めます。
[SEE_ALSO] MonitorMixin::ConditionVariable#wait