Condition(3) OCaml library Condition(3)

# [NAME](#NAME)

Condition - Condition variables to synchronize between threads.

# [Module](#Module)

Module Condition

# [Documentation](#Documentation)

Module **Condition**  
: **sig end**

Condition variables to synchronize between threads.

Condition variables are used when one thread wants to wait until another thread has finished doing something: the former thread 'waits' on the condition variable, the latter thread 'signals' the condition when it is done. Condition variables should always be protected by a mutex. The typical use is (if **D** is a shared data structure, **m** its mutex, and **c** is a condition variable):

```


     Mutex.lock m;


     while (* some predicate P over D is not satisfied *) do


       Condition.wait c m


     done;


     (* Modify D *)


     if (* the predicate P over D is now satisfied *) then Condition.signal c;


     Mutex.unlock m


   
```

*type t*

The type of condition variables.

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

Return a new condition variable.

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

**wait c m** atomically unlocks the mutex **m** and suspends the calling process on the condition variable **c** . The process will restart after the condition variable **c** has been signalled. The mutex **m** is locked again before **wait** returns.

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

**signal c** restarts one of the processes waiting on the condition variable **c** .

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

**broadcast c** restarts all processes waiting on the condition variable **c** .

2026-09-15 OCamldoc

---

Document: Condition(3o) from ocaml-4 4.14.4-r3 (Chainguard OS)
Source: https://github.com/ocaml/ocaml
