Caml1999I037-Stdlib__Mutex!t;@@@A@@@@@)mutex.mli]]@@@@ @@A@&create@$unitF@@@@@@@@@@@``@@#A@@$lock@@@@@@@@@@@@,c-c@@7B@@(try_lock@%@@@@@$boolE@@@@@@BoCo@@MC@@&unlock@;@@@@@D@@@@@@VuWu@@aD@@'protect@O@@@@@@@`@@@@@!a@@@@@@@@@@v~ I Iw~ I n@@E@@@k:.-Stdlib__Mutex0DzRW,X9wPr&Stdlib0t0VoS%{<F:8CamlinternalFormatBasics0|.e1R$|o@@@Caml1999T037&C-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``@@ @@@|@@@@@}@@~ @@@` @M5 Return a new mutex. aa@@@@@@@A@@@]@@@@@@3$lockc c@б@г!tcc@@ @@@3@La8@A@@гϠ$unit+c,c@@ @@@@@@@@@@ @@@8c @  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) EdFm@@@@@@@^B@@@Y@@@@@@3(try_lock\o]o@б@г̠!tgoho@@ @@@3ihhiiiii@La8@A@@г+$boolvowo@@ @@@@@@@@@@ @@@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@@@@@@@@@3&unlockuu@б@г!tuu@@ @@@3@La8@A@@гe$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@@@>@@@@@@3'protect~ I M~ I T@б@гb!t~ I W~ I X@@ @@@3@La8@A@@б@б@г$unit~ I ]~ I a@@ @@@@@А!a@B@~ I e ~ I g@@@@@ @@#@@А!a'*~ I l+~ I n@@@@@@@.1~ I \@@@7@@ @@4: @@@9~ 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 F o oGG  @@@@@@@_E@@@Z@@@@@@S@A@n@N%@@@s*@@3^]]^^^^^@`u,@A@ H************************************************************************gA@@hA@L@ H mBMMnBM@ H OCaml sCtC@ H yDzD3@ H Xavier Leroy and Damien Doligez, INRIA Rocquencourt E44E4@ H FF@ H Copyright 1996 Institut National de Recherche en Informatique et GG@ 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)  * 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]. 7 * 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ڐ Z/home/teraram/ci/builds/workspace/parallel-build/flambda/true/label/ocaml-manycores/stdlib @@0cVҤE&г53@@@8CamlinternalFormatBasics0|.e1R$|o&Stdlib0t0VoS%{<F:0DzRW,X9wPr@0DzRW,X9wPrAFC@Ea@@ @@Y@@>@@@@@@@n@@@P@@