dwww Home | Manual pages | Find package

Event(3o)                        OCaml library                       Event(3o)

NAME
       Event - First-class synchronous communication.

Module
       Module   Event

Documentation
       Module Event
        : sig end

       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 indepen-
       dently before being offered for communication.

       type 'a channel

       The type of communication channels carrying values of type 'a .

       val new_channel : unit -> 'a channel

       Return a new channel.

       type +'a event

       The type of communication events returning a result of type 'a .

       val send : 'a channel -> 'a -> unit event

       send ch v returns the event consisting in sending the value v over  the
       channel ch . The result value of this event is () .

       val receive : 'a channel -> 'a event

       receive  ch  returns the event consisting in receiving a value from the
       channel ch . The result value of this event is the value received.

       val always : 'a -> 'a event

       always v returns an event that is  always  ready  for  synchronization.
       The result value of this event is v .

       val choose : 'a event list -> 'a event

       choose  evl returns the event that is the alternative of all the events
       in the list evl .

       val wrap : 'a event -> ('a -> 'b) -> 'b event

       wrap ev fn returns the event that performs the same  communications  as
       ev , then applies the post-processing function fn on the return value.

       val wrap_abort : 'a event -> (unit -> unit) -> 'a event

       wrap_abort  ev  fn  returns the event that performs the same communica-
       tions as ev , but if it is not selected the function fn is called after
       the synchronization.

       val guard : (unit -> 'a event) -> 'a event

       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.

       val sync : 'a event -> 'a

       '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 re-
       turned.

       val select : 'a event list -> 'a

       'Synchronize' on an alternative of events.  select evl is shorthand for
       sync(choose evl) .

       val poll : 'a event -> 'a option

       Non-blocking version of Event.sync : offer all the communication possi-
       bilities 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 re-
       sult value of  that  communication.   Otherwise,  return  None  without
       blocking.

OCamldoc                          2023-02-12                         Event(3o)

Generated by dwww version 1.15 on Thu Jun 20 21:40:23 CEST 2024.