wait(timeout = nil) -> bool
[permalink][rdoc][edit]-
モニタのロックを開放し、現在のスレッドを停止します。
これを呼ぶスレッドはモニタのロックを保持している必要があります。
MonitorMixin::ConditionVariable#signal や MonitorMixin::ConditionVariable#broadcast で起こされるまでスレッドは停止し続けます。
timeout を与えた場合は最大 timeout 秒まで停止した後にスレッドを再開します。
実行を再開したスレッドはモニタのロックを保持した状態になります。これによって危険領域(critical section)上で動作しているスレッドはただ一つになり、排他を実現します。
true を返します。timeout が与えられていて待ち時間が timeout を越えた場合は false を返します。
- [PARAM] timeout:
- タイムアウトまでの秒数。指定しなかった場合はタイムアウトしません。
- [EXCEPTION] ThreadError:
- ロックを持っていないスレッドがこのメソッドを呼びだした場合に発生します
[SEE_ALSO] MonitorMixin::ConditionVariable#wait_while, MonitorMixin::ConditionVariable#wait_until