Module Thread_safe_pipe
A thread-safe pipe is a thread-safe interface to the write end of a normal Async.Pipe
. All operations except for create
must be called from threads outside Async, while create
can be called from inside or outside Async.
For Pipe
functions that return a unit Deferred.t
, the analog in Thread_safe_pipe
blocks.
For documentation of wakeup_scheduler
, see the Thread_safe
module.
val sexp_of_t : ('a -> Ppx_sexp_conv_lib.Sexp.t) -> 'a t -> Ppx_sexp_conv_lib.Sexp.t
val create : unit -> 'a Async_kernel.Pipe.Reader.t * 'a t
create ()
returns a reader end, which must be used inside Async, and a writer end, which must be used outside Async.create
can be called inside or outside Async.
val pushback : _ t -> unit
pushback writer
blocks the current thread until the pipe is empty or closed.
module Written_or_closed : sig ... end
module If_closed : sig ... end
Functions that write elements to the pipe take an
If_closed.t
argument to specify how to deal with the possibility that the pipe is closed.
val transfer_in_without_pushback : ?wakeup_scheduler:bool -> 'a t -> from:'a Core.Queue.t -> if_closed:'b If_closed.t -> 'b
transfer_in_without_pushback'
andwrite_without_pushback
transfer the element(s) into the pipe and return immediately.
val write_without_pushback : ?wakeup_scheduler:bool -> 'a t -> 'a -> if_closed:'b If_closed.t -> 'b
val transfer_in : 'a t -> from:'a Core.Queue.t -> if_closed:'b If_closed.t -> 'b
transfer_in
andwrite
transfer the element(s) into the pipe and block the current thread until the pipe is empty or closed (likepushback
).
val write : 'a t -> 'a -> if_closed:'b If_closed.t -> 'b
val close : _ t -> unit
val is_closed : _ t -> bool
val closed : _ t -> unit
closed writer
blocks the current thread until the pipe is closed.