CRYPTO_THREAD_SET_STATE(thread, CRYPTO_THREAD_JOINED);
/*
- * Broadcast join completion. It is important to broadcast even if
- * we haven't performed an actual join. Multiple threads could be
- * awaiting the CRYPTO_THREAD_JOIN_AWAIT -> CRYPTO_THREAD_JOINED
- * transition, but broadcast on actual join would wake only one.
- * Broadcasing here will always wake one.
+ * Signal join completion. It is important to signal even if we haven't
+ * performed an actual join. Multiple threads could be awaiting the
+ * CRYPTO_THREAD_JOIN_AWAIT -> CRYPTO_THREAD_JOINED transition, but signal
+ * on actual join would wake only one. Signalling here will always wake one.
*/
- ossl_crypto_condvar_broadcast(thread->condvar);
+ ossl_crypto_condvar_signal(thread->condvar);
ossl_crypto_mutex_unlock(thread->statelock);
if (retval != NULL)
/* Have another thread that's awaiting join retry to avoid that
* thread deadlock. */
CRYPTO_THREAD_UNSET_STATE(thread, CRYPTO_THREAD_JOIN_AWAIT);
- ossl_crypto_condvar_broadcast(thread->condvar);
+ ossl_crypto_condvar_signal(thread->condvar);
ossl_crypto_mutex_unlock(thread->statelock);
return 0;
ossl_crypto_mutex_lock(tdata->lock);
tdata->active_threads--;
- ossl_crypto_condvar_broadcast(tdata->cond_finished);
+ ossl_crypto_condvar_signal(tdata->cond_finished);
ossl_crypto_mutex_unlock(tdata->lock);
return 1;
}