Stdlib.Condition(3) OCaml library Stdlib.Condition(3)

# [NAME](#NAME)

Stdlib.Condition - no description

# [Module](#Module)

Module Stdlib.Condition

# [Documentation](#Documentation)

Module **Condition**  
: **(module Stdlib\_\_Condition)**

*type t*

The type of condition variables.

*val create* : **unit -&gt; t**

**create()** creates and returns a new condition variable. This condition variable should be associated (in the programmer's mind) with a certain mutex **m** and with a certain property P of the data structure that is protected by the mutex **m** .

*val wait* : **t -&gt; Mutex.t -&gt; unit**

The call **wait c m** is permitted only if **m** is the mutex associated with the condition variable **c** , and only if **m** is currently locked. This call atomically unlocks the mutex **m** and suspends the current thread on the condition variable **c** . This thread can later be woken up after the condition variable **c** has been signaled via **Condition.signal** or **Condition.broadcast** ; however, it can also be woken up for no reason. The mutex **m** is locked again before **wait** returns. One cannot assume that the property P associated with the condition variable **c** holds when **wait** returns; one must explicitly test whether P holds after calling **wait** .

*val signal* : **t -&gt; unit**

**signal c** wakes up one of the threads waiting on the condition variable **c** , if there is one. If there is none, this call has no effect.

It is recommended to call **signal c** inside a critical section, that is, while the mutex **m** associated with **c** is locked.

*val broadcast* : **t -&gt; unit**

**broadcast c** wakes up all threads waiting on the condition variable **c** . If there are none, this call has no effect.

It is recommended to call **broadcast c** inside a critical section, that is, while the mutex **m** associated with **c** is locked.

2026-10-23 OCamldoc

---

Document: Stdlib.Condition(3o) from ocaml 5.5.2-r0 (Chainguard OS)
Source: https://github.com/ocaml/ocaml
