Caml1999I037kXF%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@@@@@@@ @@'=@@@@@@@@@@@PcQc@@bC@@'receive#@I!a@@@@@@@@@@@@ihjh@@{D@@&always$@!a@@@3@@@@@@~jj@@E@@&choose%@$listKJ!a@@@@@@@@@S @@@@@@noono@@F@@$wrap&@d!a@@@@@@@@ @@!b@@@@@x@@@@@@@@rr *@@G@@*wrap_abort'@!a@@@@@@@@@@@@@@@@@@@@@@@@@@@@w  w  @@H@@%guard(@@@@@@@!a@@@@@@@@ @@@@@@ |  |  @@I@@$sync)@Ӡ!a@@@@@@@@@"B  #B  @@4J@@&select*@!a@@@@@@@@@@@@<H  =H  @@NK@@$poll+@!a@@@@@@&optionL @@@@@@XL G GYL G g@@jL@@@c8-%Event0Hi|j?/8w80Ƞ&Stdlib0t0VoS%{<F:8CamlinternalFormatBasics0|.e1R$|o@@@Caml1999T0379"c?C%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;@@#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+'channelAXpxXp@А!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[[@б@г$unit[[@@ @@@3@Y+@A@@г]'channel[[@А!a@B@[[@@@ @@@@@@$@@ @@!'@@@[@c7 Return a new channel. \ \ @@@@@@@8A@@*@s3@@@@@@@A+%eventB7^ 8^ @А!a@3>==>>>>>@Uj4;@@@A@A@G@B@@@L^  @ C The type of communication events returning a result of type ['a]. Y_Z_c@@@@@@@@@rB@@A]^ ^^ @@@A@;$@AA@A@B@@@@@ @@A@t@@@@@@@3lkklllll@-@A%9@$sendyczc@б@г預'channelcc@А!a@C@3@N^1@Acc@@@ @@@ @@б@А!ac c @@гq%eventcc@гV$unitcc@@ @@@(@@@@@@- @@@7@@ @@2#@@@2@@ @@75@@@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@@1@*ꐠ@@@@@@V'receivehh@б@г]'channelhh@А!a@C@3@u>@Ahh@@@ @@@ @@гݠ%eventhh@А!ahh@@@"@@@ @@@@@ @@#!@@@)h@z [receive ch] returns the event consisting in receiving a value from the channel [ch]. The result value of this event is the value received. 6e7g@@@@@@@OD@@%@J@@@@@@B&alwaysMjNj@б@А!a@C@3VUUVVVVV@Wr4@A\j]j@@г.%eventejfj@А!aljmj@@@@@@ @@@#@@ @@@@@zj@ː r [always v] returns an event that is always ready for synchronization. The result value of this event is [v]. kl/m@@@@@@@E@@%@@@@@@@=&choosenosnoy@б@г$listnono@г|%eventnono@А!a@C@3@fwH@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@@%@J @@@@@@G$wrap r r @б@г᠐%eventr r @А!a@C@3      @f>@A&r 'r @@@ @@@ @@б@б@А!a5r 6r @@А!b@C@@r Ar @@@(@@ @@#@@г%eventNr %Or *@А!b1Ur "Vr $@@@ @@@8 @@@@@ @@=ar @@@>@@ @@CA@@@ir@ [wrap ev fn] returns the event that performs the same communications as [ev], then applies the post-processing function [fn] on the return value. vs + +wu  @@@@@@@G@@+@@@@@@@b*wrap_abortw  w  @б@гa%eventw  w  @А!a@C@3@>@Aw  w  @@@ @@@ @@б@б@г\$unitw  w  @@ @@@@@гi$unitw  w  @@ @@@'@@@@@@@, @@г%eventw  w  @А!a?:w  w  @@@E@@@A @@@@@ @@Fw  @@@G@@ @@LJ@@@w  @C [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@@+@S@@@@@@k%guard|  |  @б@б@гǠ$unit#|  $|  @@ @@@3%$$%%%%%@:@A@@г%event2|  3|  @А!a@C@>|  ?|  @@@ @@@@@@$@@ @@!'@@г%eventQ|  R|  @А!a/X|  Y|  @@@%@@@6 @@@@@ @@;d|  @@@g|  @ [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. t}  u@  @@@@@@@I@@&@@@@@@@[$syncB  B  @б@г_%eventB  B  @А!a@C@3@z>@AB  B  @@@ @@@ @@А!a B  B  @@@@@@@@@@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@@@ِ@@@@@@3&selectH  H  @б@гX$listH  H  @г%eventH  H  @А!a@C@3@\wH@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@@@y9@@@@@@8$poll<L G K=L G O@б@г%eventGL G UHL G Z@А!a@C@3ONNOOOOO@W|>@AUL G RVL G T@@@ @@@ @@г&optioncL G adL G g@А!ajL G ^kL G `@@@"@@@ @@@@@ @@#!@@@xL 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. M h hQn@@@@@@@L@@%@@@@@@@B@A@@g:A@'@w@W(@@=@@C@#@@v8@@3@]x:@A@ H************************************************************************A@@A@L@ H BMMBM@ 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]. M8* 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. d 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. @;,../../ocamlc)-nostdlib"-I,../../stdlib"-I4../../otherlibs/unix"-c"-w'+33..39+-warn-error"+A"-g*-bin-annot;< N/builds/workspace/main/flambda/false/label/ocaml-linux-32/otherlibs/systhreads @@0S0ĂkIحC3BAABBBBB@@@@8CamlinternalFormatBasics0|.e1R$|oc0Hi|j?/8w80Ƞ&Stdlib0t0VoS%{<F:@0Hi|j?/8w80AMC2T@@@@%v@@@gǰ2@@H@@@j@&@@9a@@P@@