## nng_cv_wake

Wake all waiters.

### Synopsis

```c
#include <nng/nng.h>
#include <nng/supplemental/util/platform.h>

void nng_cv_wake(nng_cv *cv);
```

### Description

The `nng_cv_wake` wakes any threads waiting for the condition variable _cv_
to be signaled in the xref:nng_cv_wait.adoc[`nng_cv_wait`] or
xref:nng_cv_until.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: This function wakes all threads, which is generally safer but can
lead to a performance problem when there are many waiters, as they are all
woken simultaneously and may contend for resources.
See xref:nng_cv_wake1.adoc[`nng_cv_wake1`] for a solution to this problem.

### Return Values

None.

### Errors

None.

### See Also

xref:nng_cv_alloc.adoc[nng_cv_alloc],
xref:nng_cv_until.adoc[nng_cv_until],
xref:nng_cv_wait.adoc[nng_cv_wait],
xref:nng_cv_wake1.adoc[nng_cv_wake1],
xref:nng_mtx_alloc.adoc[nng_mtx_alloc],
xref:nng_mtx_lock.adoc[nng_mtx_lock],
xref:nng_mtx_unlock.adoc[nng_mtx_unlock],
xref:nng.adoc[nng]
