mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-01-17 14:51:20 -08:00
Condition variables must _always_ wake up somebody.
This commit is contained in:
parent
4cf99dce0b
commit
9331ec4ac5
1 changed files with 4 additions and 10 deletions
|
|
@ -86,21 +86,15 @@ mp_condition_variable_timedwait(cl_object cv, cl_object lock, cl_object seconds)
|
|||
cl_object
|
||||
mp_condition_variable_signal(cl_object cv)
|
||||
{
|
||||
if (cv->condition_variable.waiter != Cnil) {
|
||||
cv->condition_variable.waiter = Cnil;
|
||||
ecl_wakeup_waiters(ecl_process_env(), cv,
|
||||
ECL_WAKEUP_ONE | ECL_WAKEUP_RESET_FLAG);
|
||||
}
|
||||
ecl_wakeup_waiters(ecl_process_env(), cv,
|
||||
ECL_WAKEUP_ONE | ECL_WAKEUP_RESET_FLAG);
|
||||
@(return Ct)
|
||||
}
|
||||
|
||||
cl_object
|
||||
mp_condition_variable_broadcast(cl_object cv)
|
||||
{
|
||||
if (cv->condition_variable.waiter != Cnil) {
|
||||
cv->condition_variable.waiter = Cnil;
|
||||
ecl_wakeup_waiters(ecl_process_env(), cv,
|
||||
ECL_WAKEUP_ALL | ECL_WAKEUP_RESET_FLAG);
|
||||
}
|
||||
ecl_wakeup_waiters(ecl_process_env(), cv,
|
||||
ECL_WAKEUP_ALL | ECL_WAKEUP_RESET_FLAG);
|
||||
@(return Ct)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue