Module Limiter_async.Throttle
Implements a basic throttle meant to bound the number of jobs that can concurrently run. Additionally the ~burst_size and ~sustained_rate_per_sec arguments can be used to control how many jobs can be spawned in a burst, and how quickly jobs can be spawned over time. If these options are not given to create_exn they are unbounded.
concurrent_jobs_target is the desired maximum number of concurrent jobs. If the value is never changed, then this is in fact a hard upper bound. The value is mutable, however, and so may be violated temporarily if the value is reduced.
val sexp_of_t : t -> Ppx_sexp_conv_lib.Sexp.t
type _ u= t
val create_exn : concurrent_jobs_target:int -> continue_on_error:bool -> ?burst_size:int -> ?sustained_rate_per_sec:float -> unit -> tval concurrent_jobs_target : t -> intval num_jobs_waiting_to_start : t -> intval num_jobs_running : t -> intval enqueue_exn : t -> ?allow_immediate_run:bool -> ('a -> unit) -> 'a -> unitval enqueue' : t -> ('a -> 'b Async_kernel.Deferred.t) -> 'a -> 'b Outcome.t Async_kernel.Deferred.t
include Common with type 'a t := 'a u
val kill : _ t -> unitkills
t, which aborts all enqueued jobs that haven't started and all jobs enqueued in the future. Ifthas already been killed, then callingkill thas no effect. Note that kill does not affect currently running jobs in any way.
val is_dead : _ t -> boolis_dead treturnstrueiftwas killed, either bykillor by an unhandled exception in a job.