Legend:
Library
Module
Module type
Parameter
Class
Class type
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. 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.
type'a t
includesig ... end
val sexp_of_t : ('a->Sexplib.Sexp.t)->'at->Sexplib.Sexp.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.
All the following functions must be called outside Async. They behave as their counterpart in the Pipe module.
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: Raise on closed pipe, or Return a variant indicating whether the pipe is closed. This allows lightweight syntax for calls that want to raise if the pipe is closed:
val transfer_in_without_pushback :
?wakeup_scheduler:bool ->'at->from:'aCore.Queue.t->if_closed:'bIf_closed.t->'b
transfer_in_without_pushback' and write_without_pushback transfer the element(s) into the pipe and return immediately.
val write_without_pushback :
?wakeup_scheduler:bool ->'at->'a->if_closed:'bIf_closed.t->'b