Runner.For_runner_implementors
This module is specifically intended for users who implement their own runners. Regular users of Moonpool should not need to look at it.
val create :
size:(unit -> int) ->
num_tasks:(unit -> int) ->
shutdown:(wait:bool -> unit -> unit) ->
run_async:(ls:Task_local_storage.t -> task -> unit) ->
unit ->
t
Create a new runner.
NOTE: the runner should support DLA and Suspend_
on OCaml 5.x, so that Fork_join
and other 5.x features work properly.
val k_cur_runner : t option ref Moonpool_private.Thread_local_storage_.key
Key that should be used by each runner to store itself in TLS on every thread it controls, so that tasks running on these threads can access the runner. This is necessary for get_current_runner
to work.