threaded_exit/1-2¶
Description¶
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-2 call.
When the predicate argument is subsumed by the threaded_call/1
call
argument, the threaded_exit/1
call will succeed iff its argument is
a solution of the (more general) goal.
The variant threaded_exit/2
accepts a threaded call identifier tag
generated by the calls to the threaded_call/1-2 and
threaded_once/1-2 predicates. Tags shall
be regarded as an opaque term; users shall not rely on its type.
Modes and number of proofs¶
threaded_exit(+callable) - zero_or_more
threaded_exit(+callable, +nonvar) - zero_or_more
Errors¶
instantiation_error
type_error(callable, Goal)
existence_error(goal_thread, Goal)
instantiation_error
Examples¶
threaded_exit(Goal)
threaded_exit(::Goal)
threaded_exit(Object::Goal)