package batteries

  1. Overview
  2. Docs
A community-maintained standard library extension

Install

dune-project
 Dependency

Authors

Maintainers

Sources

batteries-3.10.0.tar.gz
md5=b7f3b99f12f21b1da6b6aa13d993206d
sha512=8b7f2479eb0271bcfd9168887c1e4a9a815c512eab3ee61b150fc4dfa9ec803e4f73115155f20b3017e4a822148d0e6d1c1e8e5f96790fd691b419dd39a908a2

doc/batteries/BatMutex/index.html

Module BatMutexSource

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

  • author Xavier Leroy (Base module)
  • author Damien Doligez (Base module)
  • author David Teller
Sourceval synchronize : ?lock:Mutex.t -> ('a -> 'b) -> 'a -> 'b

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.

Sourceval make : unit -> BatConcurrent.lock

Create a new abstract lock based on Mutexes.