built-in predicate
threaded_call/1-2
Description
threaded_call(Goal)
threaded_call(Goal, Tag)
Proves Goal asynchronously using a new thread. The argument can be a
message-sending goal. Calls to this predicate always succeed and return
immediately. The results (success, failure, or exception) are sent back
to the message queue of the object containing the call (this) and
can be retrieved by calling the
threaded_exit/1 predicate.
The threaded_call/2 variant returns a threaded call identifier tag that
can be used with the threaded_exit/2
and threaded_cancel/1 predicates. Tags shall be regarded
as opaque terms; users shall not rely on their type.
Note
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.
Meta-predicate template
threaded_call(0)
threaded_call(0, *)
Modes and number of proofs
threaded_call(@callable) - one
threaded_call(@callable, --nonvar) - one
Errors
Goal is a variable:instantiation_errorGoal is neither a variable nor a callable term:type_error(callable, Goal)Tag is not a variable:uninstantiation_error(Tag)Examples
Goal asynchronously in a new thread:threaded_call(Goal)::Message asynchronously in a new thread:threaded_call(::Message)Object::Message asynchronously in a new thread:threaded_call(Object::Message)