(Generator,Test)
. This predicate
creates a thread providing solutions for Generator that are
handed to a pool of threads that run Test for the different
instantiations provided by Generator concurrently. The
predicate is logically equivalent to a simple conjunction except for two
aspects: (1) terms are copied from Generator to the
test Test threads while answers are copied back to the
calling thread and (2) answers may be produced out of order.
If the evaluation of some Test raises an exception, concurrent_and/2,3 is terminated with this exception. If the caller commits after a given answer or raises an exception while concurrent_and/2,3 is active with pending choice points, all involved resources are reclaimed.
Options:
This predicate was proposed by Jan Burse as
balance((Generator,Test))
.