threaded_engine_next(Engine, Answer)

Retrieves an answer from an engine and signals it to start computing the next answer. This predicate blocks until an answer becomes available. The predicate fails when there are no more solutions to the engine goal. If the engine goal throws an exception, calling this predicate will re-throw the exception and subsequent calls will fail.


This predicate requires a backend Prolog compiler providing compatible multi-threading primitives. The value of the read-only engines flag is set to supported when that is the case.

Modes and number of proofs

threaded_engine_next(@nonvar, ?term) - zero_or_one


Engine is a variable:
Engine is neither a variable nor the name of an existing engine:
existence_error(engine, Engine)


% get the next answer from the worker_1 engine:
| ?- threaded_engine_next(worker_1, Answer).