Did you know ... Search Documentation:
Pack xlibrary -- prolog/conc_forall.pl
PublicShow source
 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)