Skip to content

Latest commit

 

History

History
31 lines (23 loc) · 948 Bytes

ForkJoin.md

File metadata and controls

31 lines (23 loc) · 948 Bytes

structure ForkJoin

val par: (unit -> 'a) * (unit -> 'b) -> 'a * 'b

par (f, g) runs f() and g() in parallel and returns their results. The cost of par is O(1), but somewhat substantial. Consider using granularity control to amortize this cost.

val parfor: int -> (int * int) -> (int -> unit) -> unit

parfor grain (lo, hi) f executes f(i) in parallel for lo <= i < hi. (Note lo is inclusive on the bottom, and hi is exclusive on the top.) The grain argument is for granularity control: the loop is split into approximately (hi-lo)/grain subranges, each of size at most grain.

val alloc: int -> 'a array

Warning: unsafe. Intended only for use in the implementation of high-performance libraries.

alloc n produces a fresh array of the length n. The resulting array has undefined contents, and must not be read until every index has been initialized (e.g. with Array.update).