module Work_group:sig
..end
type
t
min_assignable_threads
and
max_assigned_threads
.
The thread pool guarantees that requests to have threads assigned to this work group
will be met by at least min_assignable_threads
threads. The thread pool will
never assign more than max_assigned_threads
to the work group. The thread pool
does not actually reserve specific threads for the work group. It uses the same set
of threads for all work groups. Over time, a single thread may do work for
different groups. Work groups are just an accounting mechanism to make sure the
number of threads from the global pool that are being used for each work group meet
the requirements of that group.
Each work group has its own dedicated work queue. If a client requests to do some
work in a group, and that group already has min_assignable_threads
threads
assigned to it, and there are no other available threads or the group already has
max_assigned_threads
assigned to it, then the work will be placed on the work
group's queue, and will be handled in the future when threads become available to
the group.
If multiple work groups have work waiting to be done, the thread pool will
round-robin among them as threads become available.
val sexp_of_t : t -> Sexplib.Sexp.t