threaded_exit(Goal) threaded_exit(Goal, Tag)
Retrieves the result of proving
Goal in a new thread. This predicate
blocks execution until the reply is sent to the this message queue
by the thread executing the goal. When there is no thread proving the goal,
the predicate generates an exception. This predicate is non-deterministic,
providing access to any alternative solutions of its argument.
The argument of this predicate should be a variant of the argument of
the corresponding threaded_call/1
or threaded_once/1 call.
When the predicate argument is subsumed by the
threaded_once/1 call argument, the
threaded_exit/1 call will
succeed iff its argument is a solution of the (more general) goal.
threaded_exit/2 variant accepts a threaded call identifier tag
generated by the calls to the threaded_call/2
and threaded_once/2 predicates. Tags
shall be regarded as an opaque term; users shall not rely on its type.
This predicate requires a backend Prolog compiler providing
compatible multi-threading primitives. The value of the read-only
threads flag is set to
supported when that
is the case.
Modes and number of proofs¶
threaded_exit(+callable) - zero_or_more threaded_exit(+callable, +nonvar) - zero_or_more
Goalis a variable:
Goalis neither a variable nor a callable term:
Tagis a variable: