package b0
Install
Dune Dependency
Authors
Maintainers
Sources
sha512=d24b09eb520b8b91a1e5715badc9f5bcd6a6ec49c047f719a07afef6b835c128dc63e00c3be73d5353b037f4c3c9f2889e40666b30e297e872e4d011f098394c
doc/b0.b00/B000/Exec/index.html
Module B000.Exec
Build operation executors.
An executor is a parallel asynchronous work queue. It has no notion of synchronisation, any scheduled operation is randomly executed in parallel up to the executor's parallelizing limits.
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: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.kind.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.