Caml1999I036I%Event'channel;!a@@A@A@G@B@@@)event.mliXppXp@@@@@@A@+new_channel @$unitF@@@ !a@@@@@@@[[@@-A@@%event!;!a@@A@A@A@B@@@,^  -^ @@@@>B@A@$send"@%!a@@@@@#9@@@@@@@@@@@JcKc@@\C@@'receive#@C!a@@@@@@@@@@ahbh@@sD@@&always$@!a@/@@@@@@tjuj@@E@@&choose%@$listKD!a@@@@@@@M @@@@@@noono@@F@@$wrap&@\!a@@@@@@ !b@@@l@@@@@@@@rr *@@G@@*wrap_abort'@{!a@@@@@@@@@@@@@@@@@@@@@@w  w  @@H@@%guard(@@@@@!a@@@@@@@@@@@@|  |  @@I@@$sync)@!a@@@@@@@B  B  @@J@@&select*@Ҡ!a@@@@@@@@@@H  H  @@.K@@$poll+@!a@@@@&optionL @@@@@@6L G G7L G g@@HL@@@c8-%Event0DĄ{ʰ&Stdlib0y{x!O!8CamlinternalFormatBasics0oZ2t,@@@Caml1999T0368H!wC%Event*ocaml.text&_none_@@A 2 First-class synchronous communication. This module implements synchronous inter-thread communications over channels. As in John Reppy's Concurrent ML system, the communication events are first-class values: they can be built and combined independently before being offered for communication. )event.mliP77Vln@@@@@@3@@@@#intA;@@@A@@@@@9@A@$charB;@@A@@@@@=@A@&stringQ;@@ A@@@@@A@@@%bytesC;@@ A@@@@@E@@@%floatD;@@A@@@@@I@@@$boolE;@@%falsec@@S@$trued@@Y@@@A@@@@@Z@A@$unitF;@@"()e@@d@@@A@@@@@e@A@ #exnG;@@@A@@@@@i@@@#effH;@@O@A@A@@@@@@r@@@,continuationI;@@Q@@P@BDA@nY@@@@@@@@@ %arrayJ;@@R@AOA@@@@@@@@@$listK;@@S@A"[]f@@@"::g@@@T@@@ @@A@Y@@@@@@@@&optionL;@@V@A$Noneh@@@$Somei@@@@@A@Y@@@@@@@@)nativeintM;@@A@@@@@@@@%int32N;@@A@@@@@@@@%int64O;@@A@@@@@@@@&lazy_tP;@@X@AA@Y@@@@@@@@5extension_constructorR;@@A@@@@@@@@*floatarrayS;@@A@@@@@@@@&iarrayT;@@Y@AA@Y@@@@@@@@*atomic_locU;@@Z@AA@@@@@@@@@.Assert_failure`#@@@@@J@@@@@@@@[@@A=ocaml.warn_on_literal_pattern@0Division_by_zero]#@@@A  @+End_of_file\##@@@A@'FailureY#+@&@@A  @0Invalid_argumentX#4@/@@A&#))@-Match_failureV#=@@<@8@:@@a@@A74::@)Not_foundZ#N@@@A?<B B@-Out_of_memoryW#V@@@AGDJJ@.Stack_overflow^#^@@@AOLRR@.Sys_blocked_io_#f@@@AWTZ"Z@)Sys_error[#n@i@@A`]c+c@:Undefined_recursive_modulea#w@@v@r@t@@h@@Aqnt<t@:Continuation_already_takenb#@@@Ayv|D|@&Stdlib@AtA+'channelA|Xpx}Xp@А!a@3@;@@@A@A@G@B@@@Xpp@)ocaml.doc B The type of communication channels carrying values of type ['a]. YY@@@@@@@@@@@@AXpuXpw@@BA@;%@A@A@G@B@@@@@ @@A@@@@@@@@':@+new_channel[[@б@гx$unit[[@@ @@@3@Y+@A@@г]'channel[[@А!a@B@[[@@@ @@@@@@"@@%@@@[@a7 Return a new channel. \\ @@@@@@@A@@(@q@@@@@@>A+%eventB^ ^ @А!a@3@Sh4;@@@A@A@G@B@@@+^  @ C The type of communication events returning a result of type ['a]. 8_9_c@@@@@@@@@QB@@A<^ =^ @@@A@;$@AA@A@B@@@@@ @@A@S@@@@@@@3KKKKKKKK@-@A%9@$sendXcYc@б@г砐'channelccdc@А!a@C@3kkkkkkkk@N^1@Aqcrc@@@ @@@ @@б@А!a~c c @@гq%eventcc@г?$unitcc@@ @@@(@@@@@@- @@@5@@0!@@@.@@31@@@c@ [send ch v] returns the event consisting in sending the value [v] over the channel [ch]. The result value of this event is [()]. aeeb@@@@@@@C@@-@$Ő@@@@@@R'receivehh@б@гW'channelhh@А!a@C@3@q>@Ahh@@@ @@@ @@г٠%eventhh@А!ahh@@@"@@@ @@@@@!@@@h@r [receive ch] returns the event consisting in receiving a value from the channel [ch]. The result value of this event is the value received. eg@@@@@@@(D@@#@#@@@@@@@&always&j'j@б@А!a@C@3////////@Up4@A5j6j@@г(%event>j?j@А!aEjFj@@@@@@ @@@!@@@@@Qj@ r [always v] returns an event that is always ready for synchronization. The result value of this event is [v]. ^k_l/m@@@@@@@wE@@#@r@@@@@@;&chooseunosvnoy@б@г$listnono@гt%eventnono@А!a@C@3@duH@Ano|no~@@@ @@@ @@@&@@@ #@@г%eventnono@А!a!nono@@@'@@@# @@@@@&$@@@noo@. ` [choose evl] returns the event that is the alternative of all the events in the list [evl]. op@@@@@@@F@@#@>ߐ@@@@@@E$wrapr r @б@гנ%eventr r @А!a@C@3@d>@Ar r @@@ @@@ @@б@б@А!a r  r @@А!b@C@r r @@@& @@!@@г %event!r %"r *@А!b/(r ")r $@@@@@@6 @@@@@92r @@@8@@=;@@@8r@ [wrap ev fn] returns the event that performs the same communications as [ev], then applies the post-processing function [fn] on the return value. Es + +Fu  @@@@@@@^G@@'@Y@@@@@@\*wrap_abort\w  ]w  @б@гQ%eventgw  hw  @А!a@C@3oooooooo@{>@Auw  vw  @@@ @@@ @@б@б@г5$unitw  w  @@ @@@@@гB$unitw  w  @@ @@@'@@@@@*@@г%eventw  w  @А!a=8w  w  @@@C@@@? @@@@@Bw  @@@A@@FD@@@w  @+ [wrap_abort ev fn] returns the event that performs the same communications as [ev], but if it is not selected the function [fn] is called after the synchronization. x  z x @@@@@@@H@@'@;ܐ@@@@@@e%guard|  |  @б@б@г$unit|  |  @@ @@@3@:@A@@г堐%event|  |  @А!a@C@|  |  @@@ @@@@@@"@@%@@г%event|  |  @А!a-|   |  @@@#@@@4 @@@@@7)|  @@@,|  @ [guard fn] returns the event that, when synchronized, computes [fn()] and behaves as the resulting event. This enables computing events with side-effects at the time of the synchronization operation. 9}  :@  @@@@@@@RI@@$@M@@@@@@W$syncPB  QB  @б@гE%event[B  \B  @А!a@C@3cccccccc@v>@AiB  jB  @@@ @@@ @@А!a tB  uB  @@@ @@@@@{B  @될 'Synchronize' on an event: offer all the communication possibilities specified in the event to the outside world, and block until one of the communications succeed. The result value of that communication is returned. C  F  @@@@@@@J@@@@@@@@@1&selectH  H  @б@г)$listH  H  @г%eventH  H  @А!a@C@3@ZuH@AH  H  @@@ @@@ @@@&@@@ #@@А!aH  H  @@@ @@@@@H  @I a 'Synchronize' on an alternative of events. [select evl] is shorthand for [sync(choose evl)]. I  J  E@@@@@@@K@@@Y@@@@@@6$pollL G KL G O@б@г%eventL G U L G Z@А!a@C@3@Uz>@AL G RL G T@@@ @@@ @@г&option$L G a%L G g@А!a+L G ^,L G `@@@"@@@ @@@@@!@@@7L G G@ 1 Non-blocking version of {!Event.sync}: offer all the communication possibilities specified in the event to the outside world, and if one can take place immediately, perform it and return [Some r] where [r] is the result value of that communication. Otherwise, return [None] without blocking. DM h hEQn@@@@@@@]L@@#@X@@@@@@@@A@h@GA@@]@=@@-@ @=@@@t8@@3jjjjjjjj@[v:@A@ H************************************************************************sA@@tA@L@ H yBMMzBM@ H OCaml CC@ H DD3@ H David Nowak and Xavier Leroy, projet Cristal, 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@ 3* First-class synchronous communication. This module implements synchronous inter-thread communications over channels. As in John Reppy's Concurrent ML system, the communication events are first-class values: they can be built and combined independently before being offered for communication. Ǡ C* The type of communication channels carrying values of type ['a]. +8* Return a new channel. Ϡ D* The type of communication events returning a result of type ['a].  * [send ch v] returns the event consisting in sending the value [v] over the channel [ch]. The result value of this event is [()]. " * [receive ch] returns the event consisting in receiving a value from the channel [ch]. The result value of this event is the value received. Ǡ s* [always v] returns an event that is always ready for synchronization. The result value of this event is [v]. { a* [choose evl] returns the event that is the alternative of all the events in the list [evl].  * [wrap ev fn] returns the event that performs the same communications as [ev], then applies the post-processing function [fn] on the return value.  * [wrap_abort ev fn] returns the event that performs the same communications as [ev], but if it is not selected the function [fn] is called after the synchronization.  * [guard fn] returns the event that, when synchronized, computes [fn()] and behaves as the resulting event. This enables computing events with side-effects at the time of the synchronization operation.  * 'Synchronize' on an event: offer all the communication possibilities specified in the event to the outside world, and block until one of the communications succeed. The result value of that communication is returned. ` b* 'Synchronize' on an alternative of events. [select evl] is shorthand for [sync(choose evl)].  2* Non-blocking version of {!Event.sync}: offer all the communication possibilities specified in the event to the outside world, and if one can take place immediately, perform it and return [Some r] where [r] is the result value of that communication. Otherwise, return [None] without blocking. @;0../../ocamlc.opt)-nostdlib"-I,../../stdlib"-I4../../otherlibs/unix"-c"-w'+33..39+-warn-error"+A"-g*-bin-annot h/home/teraram/ci/builds/workspace/parallel-build/flambda/true/label/ocaml-manycores/otherlibs/systhreads @@0S0ĂkIحC3@@@8CamlinternalFormatBasics0oZ2t,ݠ"0DĄ{ʰ&Stdlib0y{x!O!@0DĄ{ʰAMC0Ӑ>@@@@ Z@@@Qmΰ@@ܰ(o@@@`@̐ @@7W@@P@@