module Async_kernel_config : sig ... end
Settings that globally affect the behavior of Async.
module Async_kernel_require_explicit_time_source : sig ... end
Deprecates functions that use wall-clock time, so that code must be explicit about what time source is used.
module Async_kernel_scheduler : sig ... end
The Async scheduler is responsible for running Async jobs. It maintains the queue of jobs that need to run. A "cycle" consists of running some (possibly all) jobs in the queue, along with some other bookkeeping, like advancing Async's clock to the current time.
module Bvar : sig ... end
A Bvar
is a synchronization point that allows one to broadcast
a value to clients wait
ing on the broadcast. With a Bvar
, one can efficiently notify multiple clients of edge-triggered conditions, repeating as each edge trigger occurs.
module Clock_ns : sig ... end
Provides a Clock
with Time_ns
as the unit.
module Condition : sig ... end
Async's implementation of the standard notion of a "condition" variable.
module Deferred : sig ... end
A value that will become determined asynchronously.
module Execution_context : sig ... end
The context in which an Async job runs.
module Gc : sig ... end
Async's analog of Core_kernel.Gc
.
module Invariant : sig ... end
module Ivar : sig ... end
A write-once cell that can be empty or full (i.e., hold a single value).
module Lazy_deferred : sig ... end
A delayed computation that can produce a deferred.
module Monad_sequence : sig ... end
Monad_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 ... end
The part of the Execution_context
that determines what to do when there is an unhandled exception.
module Mvar : sig ... end
An 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 Pipe : sig ... end
A buffered FIFO communication channel.
module Priority : sig ... end
The priority of a job.
module Sequencer = Throttle.Sequencer
module Stream : sig ... end
An immutable sequence of values, with a possibly incomplete tail that may be extended asynchronously.
module Synchronous_time_source : sig ... end
A synchronous version of Async_kernel.Time_source
. advance_by_alarms
runs alarms immediately, rather than enqueueing Async jobs.
module Tail : sig ... end
A pointer to the end of an Async_stream
that can be used to extend the stream.
module Throttle : sig ... end
A way to limit the number of concurrent computations.
module Time_source : sig ... end
Toplevel functions
val after : Core_kernel.Int63.t -> unit Async_kernel__Types.Deferred.t
val at : Core_kernel.Int63.t -> unit Async_kernel__Types.Deferred.t
val catch : ((unit -> unit) -> exn Monitor.Deferred.t) Monitor.with_optional_monitor_name
val choice : 'a Deferred.t -> ('a -> 'b) -> 'b Deferred.Choice.t
val choose : 'a Deferred.Choice.t list -> 'a Deferred.t
val don't_wait_for : unit Deferred.t -> unit
val every : ?start:unit Async_kernel__Types.Deferred.t -> ?stop:unit Async_kernel__Types.Deferred.t -> ?continue_on_error:bool -> Core_kernel.Int63.t -> (unit -> unit) -> unit
val never : unit -> 'a Deferred.t
val schedule : ?monitor:Monitor.t -> ?priority:Priority.t -> (unit -> unit) -> unit
val schedule' : ?monitor:Monitor.t -> ?priority:Priority.t -> (unit -> 'a Async_kernel__Types.Deferred.t) -> 'a Async_kernel__Types.Deferred.t
val 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_name
val upon : 'a Deferred.t -> ('a -> unit) -> unit
val with_timeout : Core_kernel.Int63.t -> 'a Async_kernel__Types.Deferred.t -> [ `Result of 'a | `Timeout ] Async_kernel__Types.Deferred.t
val within : ?monitor:Monitor.t -> ?priority:Priority.t -> (unit -> unit) -> unit
val within' : ?monitor:Monitor.t -> ?priority:Priority.t -> (unit -> 'a Async_kernel__Types.Deferred.t) -> 'a Async_kernel__Types.Deferred.t
Infix operators and Let_syntax
support
include Core_kernel.Monad.Infix with type 'a t := 'a Deferred.t
val (>>=) : 'a Deferred.t -> ('a -> 'a Deferred.t) -> 'a Deferred.t
t >>= f
returns a computation that sequences the computations represented by two monad elements. The resulting computation first does t
to yield a value v
, and then runs the computation returned by f v
.
val (>>|) : 'a Deferred.t -> ('a -> 'b) -> 'a Deferred.t
t >>| f
is t >>= (fun a -> return (f a))
.
equivalent to Deferred.upon
.
val (>>=?) : ('a, 'b) Deferred.Result.t -> ('a -> ('c, 'b) Deferred.Result.t) -> ('c, 'b) Deferred.Result.t
equivalent to Deferred.Result.bind
.
val (>>|?) : ('a, 'b) Deferred.Result.t -> ('a -> 'c) -> ('c, 'b) Deferred.Result.t
equivalent to Deferred.Result.map
.
include Deferred.Let_syntax
val return : 'a -> 'a Deferred.t
val (>>=) : 'a Deferred.t -> ('a -> 'a Deferred.t) -> 'a Deferred.t
t >>= f
returns a computation that sequences the computations represented by two monad elements. The resulting computation first does t
to yield a value v
, and then runs the computation returned by f v
.
val (>>|) : 'a Deferred.t -> ('a -> 'b) -> 'a Deferred.t
t >>| f
is t >>= (fun a -> return (f a))
.
module Let_syntax : sig ... end