summaryrefslogtreecommitdiff
path: root/ocaml-binary-annot/otherlibs/systhreads/mutex.mli
diff options
context:
space:
mode:
Diffstat (limited to 'ocaml-binary-annot/otherlibs/systhreads/mutex.mli')
-rw-r--r--ocaml-binary-annot/otherlibs/systhreads/mutex.mli49
1 files changed, 49 insertions, 0 deletions
diff --git a/ocaml-binary-annot/otherlibs/systhreads/mutex.mli b/ocaml-binary-annot/otherlibs/systhreads/mutex.mli
new file mode 100644
index 0000000000..b1fe141358
--- /dev/null
+++ b/ocaml-binary-annot/otherlibs/systhreads/mutex.mli
@@ -0,0 +1,49 @@
+(***********************************************************************)
+(* *)
+(* Objective Caml *)
+(* *)
+(* Xavier Leroy and Damien Doligez, INRIA Rocquencourt *)
+(* *)
+(* Copyright 1996 Institut National de Recherche en Informatique et *)
+(* en Automatique. All rights reserved. This file is distributed *)
+(* under the terms of the GNU Library General Public License, with *)
+(* the special exception on linking described in file ../../LICENSE. *)
+(* *)
+(***********************************************************************)
+
+(* $Id$ *)
+
+(** 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 -> t
+(** Return a new mutex. *)
+
+val lock : t -> 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. *)
+
+val try_lock : t -> 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 -> unit
+(** Unlock the given mutex. Other threads suspended trying to lock
+ the mutex will restart. *)