Locks, applies a setup function, calls condition-variable-signal and unlocks.
mp
lock-and-condition-variable-signal lock condvar lock-timeout setup-function &rest args => signaledp
lock⇩ |
A lock. |
condvar⇩ | |
lock-timeout⇩ |
A non-negative real or nil . |
setup-function⇩ |
A function designator. |
args⇩ |
Arguments to setup-function. |
signaledp |
A generalized boolean. |
The function lock-and-condition-variable-signal
locks the lock lock, applies setup-function to args, calls condition-variable-signal with condvar and unlocks lock. lock-and-condition-variable-signal
makes it easier to avoid mistakes when using a condition-variable.
If lock-timeout is non-nil, then lock-and-condition-variable-signal
returns nil
if lock cannot be locked within lock-timeout seconds.
lock-and-condition-variable-signal
performs the equivalent of:
(mp:with-lock (lock nil lock-timeout) (apply setup-function args) (mp:condition-variable-signal condvar))
It returns the result of the call to condition-variable-signal.
See condition-variable-signal and with-lock for more details.
setup-function is called with lock held, so it should do the minimum amount of work and avoid locking other locks. Normally setup-function should only set the cell that the process(es) that wait(s) on the condition-variable condvar check with the predicate in lock-and-condition-variable-wait.
lock-and-condition-variable-wait
simple-lock-and-condition-variable-wait
lock-and-condition-variable-broadcast
condition-variable-wait
condition-variable-signal
condition-variable-broadcast
19.7.1 Condition variables
19.4 Locks
LispWorks® User Guide and Reference Manual - 01 Dec 2021 19:30:51