Executors
The type for executor feedbacks. Indicates the given operation starts executig with, for spawn operations, their operating system process identifier.
val create : ?clock:B00_std.Time.counter -> ?rand:Stdlib.Random.State.t -> ?tmp_dir:B00_std.Fpath.t -> ?feedback:(feedback -> unit) -> trash:Trash.t -> jobs:int -> unit -> t
create ~clock ~rand ~tmp_dir ~feedback ~trash ~jobs
with:
clock
, the clock used to timestamp build operations; defaults toB00_std.Time.counter
()
.rand
random state used for internal queues; defaults toRandom
.State.make_self_init.tmp_dir
is a directory for temporary files, it must exist; defaults toB00_std.Os.Dir.default_tmp
()
.feedback
a function called with each scheduled operation when it starts executing. Default is a nop.trash
, the trash used to executeOp.Delete
build operations.jobs
the maximal number of processes spawn simultaneously.
val clock : t -> B00_std.Time.counter
clock e
is e
's clock.
val tmp_dir : t -> B00_std.Fpath.t
tmp_dir e
is e
's temporary directory.
val jobs : t -> int
jobs e
is e
's maximal number of simultaneous process spawns.
Scheduling and collecting operations
schedule e o
schedules o
for execution in e
. When o
starts executing it is given to the feedback
callback of e
(see create
).
collect e ~block
removes from e
an operation that has completed (if any). If block
is false
and no completed operation exists, the call returns immediately with None
. If block
is true
and at least one incomplete operation exists in e
, the call blocks until an operation completes. If block
is true
and no operation exists in e
None
is returned.