Mutex(3) OCaml library Mutex(3)

# [NAME](#NAME)

Mutex - Locks for mutual exclusion.

# [Module](#Module)

Module Mutex

# [Documentation](#Documentation)

Module **Mutex**  
: **sig end**

Locks for mutual exclusion.

Mutexes (mutual-exclusion locks) are used to implement critical sections and protect shared mutable data structures against concurrent accesses. The typical use is (if **m** is the mutex associated with the data structure **D** ):

```


     Mutex.lock m;


     (* Critical section that operates over D *);


     Mutex.unlock m


   
```

*type t*

The type of mutexes.

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

Return a new mutex.

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

Lock the given mutex. Only one thread can have the mutex locked at any time. A thread that attempts to lock a mutex already locked by another thread will suspend until the other thread unlocks the mutex.

**Before4.12**

**Sys\_error** was not raised for recursive locking (platform-dependent behaviour)

**Raises Sys\_error** if the mutex is already locked by the thread calling **Mutex.lock** .

*val try\_lock* : **t -&gt; bool**

Same as **Mutex.lock** , but does not suspend the calling thread if the mutex is already locked: just return **false** immediately in that case. If the mutex is unlocked, lock it and return **true** .

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

Unlock the given mutex. Other threads suspended trying to lock the mutex will restart. The mutex must have been previously locked by the thread that calls **Mutex.unlock** .

**Before4.12**

**Sys\_error** was not raised when unlocking an unlocked mutex or when unlocking a mutex from a different thread.

**Raises Sys\_error** if the mutex is unlocked or was locked by another thread.

2026-10-27 OCamldoc

---

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