(* * Copyright (c) 2017 - present Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. *) open! IStd (** Pool of processes to execute in parallel up to a number of jobs. *) type t exception Execution_error of string (** Infer process execution failure *) val create : jobs:int -> t (** Create a new pool of processes *) val start_child : f:('a -> unit) -> pool:t -> 'a -> unit (** Start a new child process in the pool. If all the jobs are taken, wait until one is free. *) val wait_all : t -> unit (** Wait until all the currently executing processes terminate *) val in_child : bool ref (** Keep track of whether the current execution is in a child process *)