threaded_peek/1-2¶
Description¶
threaded_peek(Goal)
threaded_peek(Goal, Tag)
Checks if the result of proving Goal
in a new thread is already
available. This call succeeds or fails without blocking execution
waiting for a reply to be available.
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_call/1
or
threaded_once/1
call argument, the threaded_peek/1
call will
succeed iff its argument unifies with an already available solution of
the (more general) goal.
The threaded_peek/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.
Modes and number of proofs¶
threaded_peek(+callable) - zero_or_one
threaded_peek(+callable, +nonvar) - zero_or_one
Errors¶
Goal
is a variable:instantiation_error
Goal
is neither a variable nor a callable term:type_error(callable, Goal)
Tag
is a variable:instantiation_error
Examples¶
To check for an asynchronous goal proof result:
threaded_peek(Goal)
To check for an asynchronous message to self result:
threaded_peek(::Goal)
To check for an asynchronous message result:
threaded_peek(Object::Goal)