Module Async_kernel
Contains Async's core data structures, like Deferred, Ivar, and Clock.
Async_kernel is designed to depend only on Core_kernel (as opposed to Core), and so is more platform-independent.
module Async_kernel_config : sig ... endSettings that globally affect the behavior of Async.
module Async_kernel_require_explicit_time_source = Async_kernel__.Require_explicit_time_sourcemodule Async_kernel_scheduler = Async_kernel__.Schedulermodule Bvar : sig ... endA
Bvaris a synchronization point that allows one tobroadcasta value to clientswaiting on the broadcast. With aBvar, one can efficiently notify multiple clients of edge-triggered conditions, repeating as each edge trigger occurs.
module Clock_ns : sig ... endProvides a
ClockwithTime_nsas the unit.
module Condition = Async_kernel__.Async_conditionmodule Deferred : sig ... endA value that will become determined asynchronously.
module Execution_context : sig ... endThe context in which an Async job runs.
module Gc = Async_kernel__.Async_gcmodule Invariant = Async_kernel__.Async_invariantmodule Ivar : sig ... endA write-once cell that can be empty or full (i.e., hold a single value).
module Quickcheck = Async_kernel__.Async_quickcheckmodule Lazy_deferred : sig ... endA delayed computation that can produce a deferred.
module Monad_sequence : sig ... endMonad_sequence.Sis a generic interface specifying functions that deal with a container and a monad. It is specialized to theDeferredmonad and used with various containers in modulesDeferred.Array,Deferred.List,Deferred.Queue, andDeferred.Sequence. TheMonad_sequence.howtype specifies the parallelism of container iterators.
module Monitor : sig ... endThe part of the
Execution_contextthat determines what to do when there is an unhandled exception.
module Mvar : sig ... endAn
Mvaris a mutable location that is either empty or contains a value. One canputorsetthe value, and wait onvalue_availablefor the location to be filled in either way.
module Pipe : sig ... endA buffered FIFO communication channel.
module Priority : sig ... endThe priority of a job.
module Sequencer = Throttle.Sequencermodule Stream = Async_kernel__.Async_streammodule Synchronous_time_source : sig ... endA synchronous version of
Async_kernel.Time_source.advance_by_alarmsruns alarms immediately, rather than enqueueing Async jobs.
module Tail : sig ... endA pointer to the end of an
Async_streamthat can be used to extend the stream.
module Throttle : sig ... endA way to limit the number of concurrent computations.
module Time_source : sig ... endToplevel functions
The functions below are broadly useful when writing Async programs, and so are made available at the toplevel.
val after : Async_kernel__.Import.Time_ns.Span.t -> unit Async_kernel__.Clock_intf.Deferred.tval at : Async_kernel__.Import.Time_ns.t -> unit Async_kernel__.Clock_intf.Deferred.tval catch : ((unit -> unit) -> exn Monitor.Deferred.t) Monitor.with_optional_monitor_nameval choice : 'a Deferred.t -> ('a -> 'b) -> 'b Deferred.Choice.tval choose : 'a Deferred.Choice.t list -> 'a Deferred.tval don't_wait_for : unit Deferred.t -> unitval every : ?start:unit Async_kernel__.Clock_intf.Deferred.t -> ?stop:unit Async_kernel__.Clock_intf.Deferred.t -> ?continue_on_error:bool -> Async_kernel__.Import.Time_ns.Span.t -> (unit -> unit) -> unitval never : unit -> 'a Deferred.tval schedule : ((unit -> unit) -> unit) Async_kernel__.Scheduler.with_optionsval schedule' : ((unit -> 'a Async_kernel__.Scheduler.Deferred.t) -> 'a Async_kernel__.Scheduler.Deferred.t) Async_kernel__.Scheduler.with_optionsval try_with : (?extract_exn:bool -> ?run:[ `Now | `Schedule ] -> ?rest:[ `Call of exn -> unit | `Log | `Raise ] -> (unit -> 'a Monitor.Deferred.t) -> ('a, exn) Core_kernel.Result.t Monitor.Deferred.t) Monitor.with_optional_monitor_nameval upon : 'a Deferred.t -> ('a -> unit) -> unitval with_timeout : Async_kernel__.Import.Time_ns.Span.t -> 'a Async_kernel__.Clock_intf.Deferred.t -> [ `Result of 'a | `Timeout ] Async_kernel__.Clock_intf.Deferred.tval within : ((unit -> unit) -> unit) Async_kernel__.Scheduler.with_optionsval within' : ((unit -> 'a Async_kernel__.Scheduler.Deferred.t) -> 'a Async_kernel__.Scheduler.Deferred.t) Async_kernel__.Scheduler.with_options
Infix operators and Let_syntax support
include Core_kernel.Monad.Infix with type 'a t := 'a Deferred.t
val (>>>) : 'a Async_kernel__Deferred.t -> ('a -> unit) -> unitequivalent to
Deferred.upon.
val (>>=?) : ('a, 'b) Deferred.Result.t -> ('a -> ('c, 'b) Deferred.Result.t) -> ('c, 'b) Deferred.Result.tequivalent to
Deferred.Result.bind.
val (>>|?) : ('a, 'b) Deferred.Result.t -> ('a -> 'c) -> ('c, 'b) Deferred.Result.tequivalent to
Deferred.Result.map.
include Deferred.Let_syntax
val return : 'a -> 'a Deferred.t
include Base__.Monad_intf.Infix with type 'a t := 'a Deferred.t
module Let_syntax = Deferred.Let_syntax.Let_syntax