Module Lwt_mutex
module Lwt_mutex : sig..end
Cooperative locks for mutual exclusion
type t
Type of Lwt mutexes
val create : unit -> t
create () creates a new mutex, which is initially unlocked
val lock : t -> unit Lwt.t
lock mutex lockcs the mutex, that is:
- if the mutex is unlocked, then it is marked as locked and Lwt_mutex.lock returns immediatly
- if it is locked, then Lwt_mutex.lock waits for all threads waiting on the mutex to terminate, then it resumes when the last one unlocks the mutex
Note: threads are wake up is the same order they try to lock the
mutex
val unlock : t -> unit
unlock mutex unlock the mutex if no threads is waiting on
it. Otherwise it will eventually removes the first one and
resumes it.
val is_locked : t -> bool
locked mutex returns whether mutex is currently locked
val is_empty : t -> bool
is_empty mutex returns true if they are no thread waiting on
the mutex, and false otherwise
val with_lock : t -> (unit -> 'a Lwt.t) -> 'a Lwt.t
with_lock lock f is used to lock a mutex within a block scope.
The function f () is called with the mutex locked, and its
result is returned from the call to . If an exception
is raised from f, the mutex is also unlocked before the scope of
is exited.