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&H eC-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;@@#intA@@@@@;@A@$charB;@@$charA@@@@@A@A@&stringQ;@@&stringA@@@@@G@@@%bytesC;@@%bytesA@@@@@M@@@%floatD;@@%floatA@@@@@S@@@$boolE;@@%falsec@@]@$trued@@c@@@A@@@@@d@A@$unitF;@@"()e@@n@@@A@@@@@o@A@ #exnG;@@@A@@@@@s@@@#effH;@@O@A@A@@@@@@|@@@,continuationI;@@Q@@P@B,continuationA@nY@@@@@@@@@%arrayJ;@@R@A%arrayA@@@@@@@@@ $listK;@@S@A"[]f@@@"::g@@@T@@@ @@A@Y@@@@@@@@&optionL;@@V@A$Noneh@@@$Somei@@@@@A@Y@@@@@@@@)nativeintM;@@)nativeintA@@@@@@@@%int32N;@@%int32A@@@@@@@@%int64O;@@%int64A@@@@@@@@&lazy_tP;@@X@A&lazy_tA@Y@@@@@@@@ 5extension_constructorR;@@5extension_constructorA@@@@@@@@*floatarrayS;@@*floatarrayA@@@@@@@@&iarrayT;@@Y@A&iarrayA@Y@@@@@@@@ *atomic_locU;@@Z@A*atomic_locA@@@@@@ @@@ .Assert_failure`#@@@@@J@@@@@@@@[@@A!=ocaml.warn_on_literal_pattern%@&@0Division_by_zero]#@@@A+ . .@+End_of_file\#$@@@A366@'FailureY#,@'@@A<??@0Invalid_argumentX#5@0@@AE$H#H@-Match_failureV#>@@=@9@;@@a@@AV5Y4Y@)Not_foundZ#O@@@A^=a<a@-Out_of_memoryW#W@@@AfEiDi@.Stack_overflow^#_@@@AnMqLq@.Sys_blocked_io_#g@@@AvUyTy@)Sys_error[#o@j@@A^]@:Undefined_recursive_modulea#x@@w@s@u@@h@@Aon@:Continuation_already_takenb#@@@Awv@&Stdlib@AA+!tA]]@@;@@@A@@@@@]@)ocaml.doc6 The type of mutexes. ^^@@@@@@@@@@@@@A@@@@@@@@"@&create``@б@гu$unit``@@ @@@3@A;@A@@гE!t``@@ @@@@@@@@@@@` @K5 Return a new mutex. aa@@@@@@@A@@@[ @@@@@@1$lockc c@б@г!tcc@@ @@@3@J_8@A@@г͠$unit)c*c@@ @@@@@@@@@@@4c @  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) AdBm@@@@@@@ZB@@@U@@@@@@1(try_lockXoYo@б@гȠ!tcodo@@ @@@3eddeeeee@J_8@A@@г'$boolroso@@ @@@@@@@@@@@}o @ݐ 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]. ps@@@@@@@C@@@@@@@@@1&unlockuu@б@г!tuu@@ @@@3@J_8@A@@г_$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 8 o o9G  @@@@@@@QE@@@L@@@@@@M@A@b@B@@@m*@@3POOPPPPP@Zo,@A@ H************************************************************************YA@@ZA@L@ H _BMM`BM@ H OCaml eCfC@ H kDlD3@ H Xavier Leroy and Damien Doligez, INRIA Rocquencourt qE44rE4@ H wFxF@ H Copyright 1996 Institut National de Recherche en Informatique et }G~G@ H en Automatique. HHg@ H IhhIh@ H All rights reserved. This file is distributed under the terms of JJ@ H the GNU Lesser General Public License version 2.1, with the KKN@ 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̐ [/home/teraram/ci/builds/workspace/parallel-build/flambda/false/label/ocaml-manycores/stdlib @@0cVҤE&г53@@@8CamlinternalFormatBasics0%FU(Q/Tu&Stdlib0Lku]8_٠0C Gm!)@0C Gm!)AFC@7S@@@@Q@@0@@@@@@@f@@@P@@