Legend:
Library
Module
Module type
Parameter
Class
Class type
Library
Module
Module type
Parameter
Class
Class type
Moonpool
A pool within a bigger pool (ie the ocean). Here, we're talking about pools of Thread.t
that are dispatched over several Domain.t
to enable parallelism.
We provide several implementations of pools with distinct scheduling strategies, alongside some concurrency primitives such as guarding locks (Lock.t
) and futures (Fut.t
).
module Ws_pool : sig ... end
Work-stealing thread pool.
module Fifo_pool : sig ... end
A simple thread pool in FIFO order.
module Runner : sig ... end
Interface for runners.
module Immediate_runner : sig ... end
Runner that runs tasks immediately in the caller thread.
module Pool = Fifo_pool
Default pool. Please explicitly pick an implementation instead.
val start_thread_on_some_domain : ('a -> unit) -> 'a -> Thread.t
Similar to Thread.create
, but it picks a background domain at random to run the thread. This ensures that we don't always pick the same domain to run all the various threads needed in an application (timers, event loops, etc.)
val run_async : Runner.t -> (unit -> unit) -> unit
run_async runner task
schedules the task to run on the given runner. This means task()
will be executed at some point in the future, possibly in another thread.
Number of threads recommended to saturate the CPU. For IO pools this makes little sense (you might want more threads than this because many of them will be blocked most of the time).
spawn ~on f
runs f()
on the runner (a thread pool typically) and returns a future result for it. See Fut.spawn
.
val spawn_on_current_runner : (unit -> 'a) -> 'a Fut.t
module Lock : sig ... end
Mutex-protected resource.
module Fut : sig ... end
Futures.
module Chan : sig ... end
Channels.
module Fork_join : sig ... end
Fork-join primitives.
module Thread_local_storage : sig ... end
Thread local storage
module Blocking_queue : sig ... end
A simple blocking queue.
module Bounded_queue : sig ... end
A blocking queue of finite size.
module Atomic : sig ... end
Atomic values.