Module Luv.Thread_pool

Thread pool.

See libuv thread pool in the user guide and Thread pool work scheduling in libuv.

module Request : sig ... end

Optional request objects for canceling thread pool requests. Binds uv_work_t.

val queue_work : ?⁠loop:Loop.t -> ?⁠request:Request.t -> (unit -> unit) -> ((unit, Error.t) Result.result -> unit) -> unit

Schedules a function to be called by a thread in the thread pool.

Binds uv_queue_work.

In Luv.Thread_pool.queue_work f after, f is the function that will be called in the thread pool. after will be called by the libuv loop (that is, typically, in the main thread) after f completes, or immediately, in case there is an error scheduling f.

val queue_c_work : ?⁠loop:Loop.t -> ?⁠request:Request.t -> ?⁠argument:nativeint -> nativeint -> ((unit, Error.t) Result.result -> unit) -> unit

Schedules a C function to be called by a thread in the thread pool.

Alternative binding to uv_queue_work.

The C function is specified by its address. It should have signature (*)(void*). The default value is ?argument is NULL (0).

val set_size : ?⁠if_not_already_set:bool -> int -> unit

Sets UV_THREADPOOL_SIZE.

This function should be called as soon during process startup as possible.