= nng_cv_wake1(3supp) // // Copyright 2018 Staysail Systems, Inc. // Copyright 2018 Capitar IT Group BV // // This document is supplied under the terms of the MIT License, a // copy of which should be located in the distribution where this // file was obtained (LICENSE.txt). A copy of the license may also be // found online at https://opensource.org/licenses/MIT. // == NAME nng_cv_wake1 - wake one waiter == SYNOPSIS [source, c] ---- #include #include void nng_cv_wake1(nng_cv *cv); ---- == DESCRIPTION The `nng_cv_wake1()` wakes at most one thread waiting for the condition variable _cv_ to be signaled in the xref:nng_cv_wait.3supp.adoc[`nng_cv_wait()`] or xref:nng_cv_until.3supp.adoc[`nng_cv_until()`] functions. The caller must have have ownership of the mutex that was used when _cv_ was allocated. NOTE: The caller should already have set the condition that the waiters will check, while holding the mutex. TIP: While this function avoids the "`thundering herd`" problem, the caller cannot predict which waiter will be woken, and so the design must ensure that it is sufficient that _any_ waiter be woken. When in doubt, it is safer to use xref:nng_cv_wake.3supp.adoc[`nng_cv_wake()`]. == RETURN VALUES None. == ERRORS None. == SEE ALSO [.text-left] xref:nng_cv_alloc.3supp.adoc[nng_cv_alloc(3supp)], xref:nng_cv_until.3supp.adoc[nng_cv_until(3supp)], xref:nng_cv_wait.3supp.adoc[nng_cv_wait(3supp)], xref:nng_cv_wake.3supp.adoc[nng_cv_wake(3supp)], xref:nng_mtx_alloc.3supp.adoc[nng_mtx_alloc(3supp)], xref:nng_mtx_lock.3supp.adoc[nng_mtx_lock(3supp)], xref:nng_mtx_unlock.3supp.adoc[nng_mtx_unlock(3supp)], xref:nng.7.adoc[nng(7)]