Caml1999I031G%Event'channel8!a@@A@A@G@B@@@)event.mliXppXp@@@@@A@+new_channel@$unitF@@@!a@@@@@@@[[@@,A@%event8!a@@A@A@A@B@@@+^  ,^ @@@@Xpx?Xp@А!a@0EDDEEEEE@D8@@@A@A@G@B@@@QXpp@)ocaml.docb B The type of communication channels carrying values of type ['a]. _Y`Y@@@@@@@@@w@@AcXpudXpw@@BA@8#@A@A@G@B@@@@@ @@A@@g,@+new_channel s[t[@б@гנ$unit~[[@@ @@@0@K@A@@гO'channel[[@А!a@B@[[@@@ @@@@@@"@@%@@@[@T7 Return a new channel. \\ @@@@@@@A@'@2A(%event B^ ^ @А!a@0@G\(8@@@A@A@G@B@@@^  @ C The type of communication events returning a result of type ['a]. __c@@@@@@@@@B@A^ ^ @@@A@8"@A@A@A@B@@@@@ @@A@@0@ @A,@$sendcc@б@г'channelcc@А!a@C@0@AQ&@A c c@@@ @@@ @@б@А!ac c @@гd%event"c#c@г$unit,c-c@@ @@@(@@@@@@- @@@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 [()]. KaeeLb@@@@@@@cC@,@F'receiveWhXh@б@г$'channelbhch@А!a@C@0jiijjjjj@e2@Aphqh@@@ @@@ @@г%event~hh@А!ahh@@@"@@@ @@@@@!@@@h@@ [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@"@4&alwaysjj@б@А!a@C@0@Id(@Ajj@@г%eventjj@А!ajj@@@@@@ @@@!@@@@@j@ 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@гC%eventnono@А!a@C@0      @Xi<@Ano|no~@@@ @@@ @@@&@@@ #@@гd%event"no#no@А!a!)no*no@@@'@@@# @@@@@&$@@@5noo@䐠 ` [choose evl] returns the event that is the alternative of all the events in the list [evl]. AoBp@@@@@@@YF@"@9$wrapMr Nr @б@г%eventXr Yr @А!a@C@0`__`````@X}2@Afr gr @@@ @@@ @@б@б@А!aur vr @@А!b@C@r r @@@& @@!@@гΠ%eventr %r *@А!b/r "r $@@@@@@6 @@@@@9r @@@8@@=;@@@r@R [wrap ev fn] returns the event that performs the same communications as [ev], then applies the post-processing function [fn] on the return value. s + +u  @@@@@@@G@&@P*wrap_abortw  w  @б@г%eventw  w  @А!a@C@0@o2@Aw  w  @@@ @@@ @@б@б@г?$unitw  w  @@ @@@@@гL$unitw  w  @@ @@@'@@@@@*@@гE%eventw  w  @А!a=8 w   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@&@Y%guard2|  3|  @б@б@г$unit?|  @|  @@ @@@0A@@AAAAA@t.@A@@г%eventN|  O|  @А!a@C@Z|  [|  @@@ @@@@@@"@@%@@г%eventk|  l|  @А!a-r|  s|  @@@#@@@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. }  @  @@@@@@@I@#@K$syncB  B  @б@г䠐%eventB  B  @А!a@C@0@j2@AB  B  @@@ @@@ @@А!a B  B  @@@ @@@@@B  @q '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@@%&selectH  H  @б@гz$listH  H  @г1%eventH  H  @А!a@C@0@Ni<@AH  H  @@@ @@@ @@@&@@@ #@@А!a H  H  @@@ @@@@@H  @Ð a 'Synchronize' on an alternative of events. [select evl] is shorthand for [sync(choose evl)].  I  !J  E@@@@@@@8K@@*$poll,L G K-L G O@б@гy%event7L G U8L G Z@А!a@ C@0?>>?????@In2@AEL G RFL G T@@@ @@@ @@гǠ&optionSL G aTL G g@А!aZL G ^[L G `@@@"@@@  @@@@@ !@@@fL 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. rM h hsQn@@@@@@@L@"@4@>A@ @A@A@-@@Q@=@p@\ @@|@h,@@0@Oj.@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]. 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. S * [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. @<,../../ocamlc)-nostdlib"-I,../../stdlib"-I4../../otherlibs/unix"-c"-w'+33..39+-warn-error"+A"-g*-bin-annot,-safe-string H/home/barsac/ci/builds/workspace/step-by-step-build/otherlibs/systhreads @0S0ĂkIحC0$##$$$$$@"@@8CamlinternalFormatBasics0cEXy