diff --git a/moonpool/Moonpool_fib/Fiber/index.html b/moonpool/Moonpool_fib/Fiber/index.html index 9469845e..98447e4f 100644 --- a/moonpool/Moonpool_fib/Fiber/index.html +++ b/moonpool/Moonpool_fib/Fiber/index.html @@ -1,2 +1,2 @@ -
Moonpool_fib.FiberFibers.
A fiber is a lightweight computation that runs cooperatively alongside other fibers. In the context of moonpool, fibers have additional properties:
val res : 'a t -> 'a Moonpool.Fut.tFuture result of the fiber.
type 'a callback = 'a Moonpool.Exn_bt.result -> unitCallbacks that are called when a fiber is done.
type cancel_callback = Moonpool.Exn_bt.t -> unitval self : unit -> anyself () is the current fiber. Must be run from inside a fiber.
val peek : 'a t -> 'a Moonpool.Fut.or_error optionPeek inside the future result
val is_done : _ t -> boolHas the fiber completed?
val is_cancelled : _ t -> boolHas the fiber completed with a failure?
val is_success : _ t -> boolHas the fiber completed with a value?
val await : 'a t -> 'aawait fib is like Fut.await (res fib)
val wait_block_exn : 'a t -> 'await_block_exn fib is Fut.wait_block_exn (res fib). NOTE: See Fut.wait_block for warnings about deadlocks.
val wait_block : 'a t -> 'a Moonpool.Fut.or_errorwait_block fib is Fut.wait_block (res fib). NOTE: See Fut.wait_block for warnings about deadlocks.
Check if the current fiber is cancelled, in which case this raises. Must be run from inside a fiber.
val with_cancel_callback : _ t -> cancel_callback -> (unit -> 'a) -> 'awith_cancel_callback fib cb (fun () -> <e>) evaluates e in a scope in which, if the fiber fib is cancelled, cb() is called. If e returns without the fiber being cancelled, this callback is removed.
val with_self_cancel_callback : cancel_callback -> (unit -> 'a) -> 'awith_self_cancel_callback cb f calls f() in a scope where cb is added to the cancel callbacks of the current fiber
Wait for fiber to be done and call the callback with the result. If the fiber is done already then the callback is invoked immediately with its result.
val spawn_top : on:Moonpool.Runner.t -> (unit -> 'a) -> 'a tspawn_top ~on f spawns a new (toplevel) fiber onto the given runner. This fiber is not the child of any other fiber: its lifetime is only determined by the lifetime of f().
val spawn_link : protect:bool -> (unit -> 'a) -> 'a tspawn_link ~protect f spawns a sub-fiber f_child from a running fiber parent. The sub-fiber f_child is attached to the current fiber and fails if the current fiber parent fails.
Moonpool_fib.FiberFibers.
A fiber is a lightweight computation that runs cooperatively alongside other fibers. In the context of moonpool, fibers have additional properties:
val res : 'a t -> 'a Moonpool.Fut.tFuture result of the fiber.
type 'a callback = 'a Moonpool.Exn_bt.result -> unitCallbacks that are called when a fiber is done.
type cancel_callback = Moonpool.Exn_bt.t -> unitval self : unit -> anyself () is the current fiber. Must be run from inside a fiber.
val peek : 'a t -> 'a Moonpool.Fut.or_error optionPeek inside the future result
val is_done : _ t -> boolHas the fiber completed?
val is_cancelled : _ t -> boolHas the fiber completed with a failure?
val is_success : _ t -> boolHas the fiber completed with a value?
val await : 'a t -> 'aawait fib is like Fut.await (res fib)
val wait_block_exn : 'a t -> 'await_block_exn fib is Fut.wait_block_exn (res fib). NOTE: See Fut.wait_block for warnings about deadlocks.
val wait_block : 'a t -> 'a Moonpool.Fut.or_errorwait_block fib is Fut.wait_block (res fib). NOTE: See Fut.wait_block for warnings about deadlocks.
Check if the current fiber is cancelled, in which case this raises. Must be run from inside a fiber.
val add_on_cancel : _ t -> cancel_callback -> cancel_handleadd_on_cancel fib cb adds cb to the list of cancel callbacks for fib. If fib is already cancelled, cb is called immediately.
val remove_on_cancel : _ t -> cancel_handle -> unitremove_on_cancel fib h removes the cancel callback associated with handle h.
val with_cancel_callback : _ t -> cancel_callback -> (unit -> 'a) -> 'awith_cancel_callback fib cb (fun () -> <e>) evaluates e in a scope in which, if the fiber fib is cancelled, cb() is called. If e returns without the fiber being cancelled, this callback is removed.
val with_self_cancel_callback : cancel_callback -> (unit -> 'a) -> 'awith_self_cancel_callback cb f calls f() in a scope where cb is added to the cancel callbacks of the current fiber
Wait for fiber to be done and call the callback with the result. If the fiber is done already then the callback is invoked immediately with its result.
val spawn_top : on:Moonpool.Runner.t -> (unit -> 'a) -> 'a tspawn_top ~on f spawns a new (toplevel) fiber onto the given runner. This fiber is not the child of any other fiber: its lifetime is only determined by the lifetime of f().
val spawn_link : protect:bool -> (unit -> 'a) -> 'a tspawn_link ~protect f spawns a sub-fiber f_child from a running fiber parent. The sub-fiber f_child is attached to the current fiber and fails if the current fiber parent fails.
Moonpool_fib.FlsFiber-local storage.
This storage is associated to the current fiber, just like thread-local storage is associated with the current thread.
include module type of struct include Moonpool.Task_local_storage endtype storage = Moonpool.Task_local_storage.storageUnderlying storage for a task
type 'a key = 'a Moonpool.Task_local_storage.keyA key used to access a particular (typed) storage slot on every task.
val new_key : init:(unit -> 'a) -> unit -> 'a keynew_key ~init () makes a new key. Keys are expensive and should never be allocated dynamically or in a loop. The correct pattern is, at toplevel:
let k_foo : foo Task_ocal_storage.key =
+Fls (moonpool.Moonpool_fib.Fls) Module Moonpool_fib.Fls
Fiber-local storage.
This storage is associated to the current fiber, just like thread-local storage is associated with the current thread.
See Moonpool.Task_local_storage for more general information, as this is based on it.
NOTE: it's important to note that, while each fiber has its own storage, spawning a sub-fiber f2 from a fiber f1 will only do a shallow copy of the storage. Values inside f1's storage will be physically shared with f2.
include module type of struct include Moonpool.Task_local_storage end
type storage = Moonpool.Task_local_storage.storageUnderlying storage for a task
type 'a key = 'a Moonpool.Task_local_storage.keyA key used to access a particular (typed) storage slot on every task.
val new_key : init:(unit -> 'a) -> unit -> 'a keynew_key ~init () makes a new key. Keys are expensive and should never be allocated dynamically or in a loop. The correct pattern is, at toplevel:
let k_foo : foo Task_ocal_storage.key =
Task_local_storage.new_key ~init:(fun () -> make_foo ()) ()
(* … *)