package batteries
Install
Dune Dependency
Authors
Maintainers
Sources
md5=ea26b5c72e6731e59d856626049cca4d
sha512=55975b62c26f6db77433a3ac31f97af609fc6789bb62ac38b267249c78fd44ff37fe81901f1cf560857b9493a6046dd37b0d1c0234c66bd59e52843aac3ce6cb
doc/batteries/BatMutex/index.html
Module BatMutex
Source
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.synchronize ~lock:m (fun () ->
(* Critical section that operates over D *);
) ()
This module implements Control.Concurrency.Common
Protect a function.
synchronize f
returns a new function f'
with the same behavior as f
but such that concurrent calls to f'
are queued if necessary to avoid races.
synchronize ~lock:l f
behaves as synchronize f
but uses a user-specified lock l
, which may be useful to share a lock between several function. This is necessary in particular when the lock is specific to a data structure rather than to a function.
In either case, the lock is acquired when entering the function and released when the function call ends, whether this is due to normal termination or to some exception being raised.
Create a new abstract lock based on Mutexes.