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_persistent_connection = Async_kernel__.Persistent_connectionmodule Async_kernel_require_explicit_time_source = Async_kernel__.Require_explicit_time_sourcemodule Async_kernel_scheduler = Async_kernel__.Schedulermodule Bvar : sig ... endA Bvar is a synchronization point that allows one to broadcast a value to clients
waiting on the broadcast. With a Bvar, one can efficiently notify multiple
clients of edge-triggered conditions, repeating as each edge trigger occurs.
module Condition = Async_kernel__.Async_conditionmodule Eager_deferred : sig ... endEager_deferred partially implements the Deferred interface, with a type 'a t
equal to 'a Deferred.t, but where the operations are "eager", that is built upon a
world where bind, map, and upon eagerly apply their closure without preemption
in the case the deferred they are working with is already determined.
module Gc = Async_kernel__.Async_gcmodule Invariant = Async_kernel__.Async_invariantmodule Quickcheck = Async_kernel__.Async_quickcheckmodule Limiter = Limiter_in_this_directorymodule Monad_sequence : sig ... endMonad_sequence.S is a generic interface specifying functions that deal with a
container and a monad. It is specialized to the Deferred monad and used with
various containers in modules Deferred.Array, Deferred.List, Deferred.Queue, and
Deferred.Sequence. The Monad_sequence.how type specifies the parallelism of
container iterators.
module Monitor : sig ... endThe part of the Execution_context that determines
what to do when there is an unhandled exception.
module Mvar : sig ... endAn Mvar is a mutable location that is either empty or contains a value. One can
put or set the value, and wait on value_available for the location to be filled
in either way.
module Sequencer = Throttle.Sequencermodule Stream = Async_kernel__.Async_streammodule Synchronous_time_source : sig ... endA synchronous version of Async_kernel.Time_source. advance_by_alarms runs
alarms immediately, rather than enqueueing Async jobs.
module Tail : sig ... endA pointer to the end of an Async_stream that can be used to extend the stream.
module Time_source : sig ... endmodule Use_eager_deferred : sig ... endIntended usage is to open Use_eager_deferred to shadow operations from the non-eager
world and rebind them to their eager counterparts.
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_optionsLet_syntax supportinclude Core_kernel.Monad.Infix with type a t := a Deferred.tval (>>=?) : ('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_syntaxThese are convenient to have in scope when programming with a monad:
val return : 'a ‑> 'a Deferred.tinclude Base__.Monad_intf.Infix with type a t := a Deferred.tmodule Let_syntax = Deferred.Let_syntax.Let_syntax