Caml1999I0375tà-Stdlib__Mutex!t;@@@A@@@@@)mutex.mli]]@@@@ @@A@&create@$unitF@@@@@@@@@``@@!A@@$lock@@@@@@@@@@(c)c@@3B@@(try_lock@!@@@$boolE@@@@@@@@@@@@NuOu@@YD@@'protect@G@@@@@T@@@!a@@@@@@@@h~ I Ii~ I n@@sE@@@k:.-Stdlib__Mutex0C Gm!)&Stdlib0Lku]8_٠8CamlinternalFormatBasics0%FU(Q/Tu@@@Caml1999T037%gC-Stdlib__Mutex*ocaml.text&_none_@@A q 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 ]} )mutex.mliP77[@@@@@@3@@@@@@#intA;@@@A@@@@@:@A@$charB;@@A@@@@@>@A@&stringQ;@@ A@@@@@B@@@%bytesC;@@ A@@@@@F@@@%floatD;@@A@@@@@J@@@$boolE;@@%falsec@@T@$trued@@Z@@@A@@@@@[@A@$unitF;@@"()e@@e@@@A@@@@@f@A@ #exnG;@@@A@@@@@j@@@#effH;@@O@A@A@@@@@@s@@@,continuationI;@@Q@@P@B@A@nY@@@@@@@@@%arrayJ;@@R@A@A@@@@@@@@@ $listK;@@S@A"[]f@@@"::g@@@T@@@ @@A@Y@@@@@@@@&optionL;@@V@A$Noneh@@@$Somei@@@@@A@Y@@@@@@@@)nativeintM;@@A@@@@@@@@%int32N;@@A@@@@@@@@%int64O;@@A@@@@@@@@&lazy_tP;@@X@AJA@Y@@@@@@@@5extension_constructorR;@@A@@@@@@@@*floatarrayS;@@A@@@@@@@@&iarrayT;@@Y@A[A@Y@@@@@@@@*atomic_locU;@@Z@AdA@@@@@@@@@.Assert_failure`#@@@@@J@@@@@@@@[@@A=ocaml.warn_on_literal_pattern @ @0Division_by_zero]#@@@A  @+End_of_file\#$@@@A@'FailureY#,@'@@A!$$@0Invalid_argumentX#5@0@@A*$-#-@-Match_failureV#>@@=@9@;@@a@@A;5>4>@)Not_foundZ#O@@@AC=F<F@-Out_of_memoryW#W@@@AKENDN@.Stack_overflow^#_@@@ASMVLV@.Sys_blocked_io_#g@@@A[U^T^@)Sys_error[#o@j@@Ad^g]g@:Undefined_recursive_modulea#x@@w@s@u@@h@@Auoxnx@:Continuation_already_takenb#@@@A}wv@&Stdlib@AxA+!tA]]@@;@@@A@@@@@]@)ocaml.doc6 The type of mutexes. ^^@@@@@@@@@@@@@A@@@@@@@@"@&create``@б@гc$unit``@@ @@@3@A;@A@@гE!t``@@ @@@@@@@@@@@` @K5 Return a new mutex. aa@@@@@@@A@@@[񐠠@@@@@@1$lockc c@б@г!tcc@@ @@@3@J_8@A@@г$unitcc@@ @@@@@@@@@@@c @  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. @raise Sys_error if the mutex is already locked by the thread calling {!Mutex.lock}. @before 4.12 {!Sys_error} was not raised for recursive locking (platform-dependent behaviour) &d'm@@@@@@@?B@@@:@@@@@@1(try_lock=o>o@б@гȠ!tHoIo@@ @@@3JIIJJJJJ@J_8@A@@г$boolWoXo@@ @@@@@@@@@@@bo @ݐ 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]. opps@@@@@@@C@@@@@@@@@1&unlockuu@б@г!tuu@@ @@@3@J_8@A@@гM$unituu@@ @@@@@@@@@@@u @&  Unlock the given mutex. Other threads suspended trying to lock the mutex will restart. The mutex must have been previously locked by the thread that calls {!Mutex.unlock}. @raise Sys_error if the mutex is unlocked or was locked by another thread. @before 4.12 {!Sys_error} was not raised when unlocking an unlocked mutex or when unlocking a mutex from a different thread. v|  G@@@@@@@D@@@6̐@@@@@@1'protect~ I M~ I T@б@гZ!t~ I W~ I X@@ @@@3@J_8@A@@б@б@г$unit~ I ]~ I a@@ @@@@@А!a@B@~ I e~ I g@@@ @@!@@А!a%~ I l~ I n@@@ @@* ~ I \@@@1@@.4@@@~ I I @  [protect mutex f] runs [f()] in a critical section where [mutex] is locked (using {!lock}); it then takes care of releasing [mutex], whether [f()] returned a value or raised an exception. The unlocking operation is guaranteed to always takes place, even in the event an asynchronous exception (e.g. {!Sys.Break}) is raised in some signal handler. @since 5.1  o oG  @@@@@@@6E@@@1@@@@@@M@A@b@B@@@m*@@354455555@Zo,@A@ H************************************************************************>A@@?A@L@ H DBMMEBM@ H OCaml JCKC@ H PDQD3@ H Xavier Leroy and Damien Doligez, INRIA Rocquencourt VE44WE4@ H \F]F@ H Copyright 1996 Institut National de Recherche en Informatique et bGcG@ H en Automatique. hHiHg@ H nIhhoIh@ H All rights reserved. This file is distributed under the terms of tJuJ@ H the GNU Lesser General Public License version 2.1, with the zK{KN@ H special exception on linking described in the file LICENSE. LOOLO@ H MM@ H************************************************************************NN5@ r* 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 ]} 7* The type of mutexes. 6* Return a new mutex.  * 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. @raise Sys_error if the mutex is already locked by the thread calling {!Mutex.lock}. @before 4.12 {!Sys_error} was not raised for recursive locking (platform-dependent behaviour) u * 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]. / * Unlock the given mutex. Other threads suspended trying to lock the mutex will restart. The mutex must have been previously locked by the thread that calls {!Mutex.unlock}. @raise Sys_error if the mutex is unlocked or was locked by another thread. @before 4.12 {!Sys_error} was not raised when unlocking an unlocked mutex or when unlocking a mutex from a different thread. 頠 * [protect mutex f] runs [f()] in a critical section where [mutex] is locked (using {!lock}); it then takes care of releasing [mutex], whether [f()] returned a value or raised an exception. The unlocking operation is guaranteed to always takes place, even in the event an asynchronous exception (e.g. {!Sys.Break}) is raised in some signal handler. @since 5.1 @?)../ocamlc0-strict-sequence(-absname"-w5+a-4-9-41-42-44-45-48"-g+-warn-error"+A*-bin-annot)-nostdlib*-principal"-o1stdlib__Mutex.cmi"-c D/builds/workspace/precheck/flambda/false/label/ocaml-linux-32/stdlib @@0cVҤE&г53@@@8CamlinternalFormatBasics0%FU(Q/Tu&Stdlib0Lku]8_٠ܐ0C Gm!)@0C Gm!)AFC@7S@@@@Q@@0@@@@@@@f@@@P@@