- conc_forall(:Cond, :Action) is semidet
- Concurrent version of forall/2. This predicate will prove several
alternatives of Cond with Action, using multiple threads. The maximum number
of threads defined is the amount of cores available. If the number of
pending jobs is greater than the number of workers, then the system will wait
until a job is finished before to process the next alternative, this is done
to avoid that the alternatives of Cond could overflow the memory. Note that
this is different from concurrent_forall/3 in SWI-Prolog, since conc_forall/3
always execute the tasks concurrently, which is needed in some places where
the tasks needs to be isolated from each other.
- conc_forall(:Cond, :Action, :Join) is semidet
- Join is called after the execution of Action in the main thread. Sometimes
we still need to execute a part of the code serialized. Without concurrency,
it is equivalent to
forall(Cond, (Action, ignore(Join)))
.
Undocumented predicates
The following predicates are exported, but not or incorrectly documented.
- cond_forall(Arg1, Arg2, Arg3, Arg4)