Method Thread.Condition()->wait()
- Method wait
void wait(Thread.MutexKey mutex_key)
void wait(Thread.MutexKey mutex_key, int(0..)|float seconds)
void wait(Thread.MutexKey mutex_key, int(0..) seconds, int(0..999999999) nanos)- Description
Wait for condition.
This function makes the current thread sleep until the condition variable is signalled or the timeout is reached.
- Parameter mutex_key
A Thread.MutexKey object for a Thread.Mutex. It will be unlocked atomically before waiting for the signal and then relocked atomically when the signal is received or the timeout is reached.
- Parameter seconds
Seconds to wait before the timeout is reached.
- Parameter nanos
Nano (1/1000000000) seconds to wait before the timeout is reached. This value is added to the number of seconds specified by seconds.
A timeout of zero seconds disables the timeout.
The thread that sends the signal should have the mutex locked while sending it. Otherwise it's impossible to avoid races where signals are sent while the listener(s) haven't arrived to the wait calls yet.
- Note
The support for timeouts was added in Pike 7.8.121, which was after the first public release of Pike 7.8.
- Note
Note that the timeout is approximate (best effort), and may be exceeded if eg the mutex is busy after the timeout.
- Note
In Pike 7.2 and earlier it was possible to call wait() without arguments. This possibility was removed in later versions since it unavoidably leads to programs with races and/or deadlocks.
- Note
Note also that any threads waiting on the condition will be woken up when it gets destructed.
- See also