package opam-core

  1. Overview
  2. Docs

Parallel execution of jobs following a directed graph

module type VERTEX = sig ... end
module type G = sig ... end
exception Aborted

When one job fails due to an exception, other running jobs are interrupted and reported with this sub-exception in the Errors list

Simply parallel execution of tasks

exception Errors of int list * (int * exn) list * int list

In the simple iter, map and reduce cases, ints are the indexes of the jobs in the list

val iter : jobs:int -> command:('a -> unit OpamProcess.job) -> ?dry_run:bool -> 'a list -> unit
val map : jobs:int -> command:('a -> 'b OpamProcess.job) -> ?dry_run:bool -> 'a list -> 'b list
val reduce : jobs:int -> command:('a -> 'b OpamProcess.job) -> merge:('b -> 'b -> 'b) -> nil:'b -> ?dry_run:bool -> 'a list -> 'b

More complex parallelism with dependency graphs

module type SIG = sig ... end
module Make (G : G) : SIG with module G = G and type G.V.t = G.V.t
module type GRAPH = sig ... end
module MakeGraph (V : VERTEX) : GRAPH with type V.t = V.t