Module Luv.Mutex

Mutexes.

See Synchronization primitives in the user guide and Mutex locks in libuv.

type t = Luv__.C.Types.Mutex.t Ctypes.ptr

Binds uv_mutex_t.

val init : ?⁠recursive:bool -> unit -> (tError.t) Result.result

Allocates and initializes a mutex.

Binds uv_mutex_init. See pthread_mutex_init(3p).

If ?recursive is set to true, calls uv_mutex_init_recursive instead.

val destroy : t -> unit

Cleans up a mutex.

Binds uv_mutex_destroy. See pthread_mutex_destroy(3p).

val lock : t -> unit

Takes a mutex.

Binds uv_mutex_lock. See pthread_mutex_lock(3p).

The calling thread is blocked until it obtains the mutex.

val trylock : t -> (unit, Error.t) Result.result

Tries to take the mutex without blocking.

Binds uv_mutex_trylock. See pthread_mutex_trylock(3p).

val unlock : t -> unit

Releases the mutex.

Binds uv_mutex_unlock. See pthread_mutex_unlock(3p).