A resource throttle holds a static list of n resources that are handed out in a
round-robin fashion to up to n concurrent jobs. A resource given to create
may be re-used many times in the lifetime of t but will never be used by more
than one job at a time.
include sig ... endval sexp_of_t : ('a ‑> Base.Sexp.t) ‑> 'a t ‑> Base.Sexp.tval create_exn : resources:'a list ‑> continue_on_error:bool ‑> ?burst_size:int ‑> ?sustained_rate_per_sec:float ‑> unit ‑> 'a tval max_concurrent_jobs : _ t ‑> intval enqueue_exn : 'a t ‑> ?allow_immediate_run:bool ‑> ('a ‑> unit) ‑> unitval enqueue' : 'a t ‑> ('a ‑> 'b Async_kernel.Deferred.t) ‑> 'b Outcome.t Async_kernel.Deferred.tinclude Common with type a t := a tval kill : _ t ‑> unitkills t, which aborts all enqueued jobs that haven't started and all jobs enqueued
in the future. If t has already been killed, then calling kill t has no effect.
Note that kill does not affect currently running jobs in any way.
val is_dead : _ t ‑> boolis_dead t returns true if t was killed, either by kill or by an unhandled
exception in a job.