Logtalk reference manual
Built-in predicate: threaded_call/1-2
Contents > Reference Manual > Built-in Predicates > threaded_call/1-2

## 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 succeeds and return immediately. The results (success, failure, or exception) are sent back to the message queue of the object containing the call (this); they can be retrieved by calling the `threaded_exit/1` predicate.

The variant `threaded_call/2` returns a threaded call identifier tag that can be used with the `threaded_exit/2` predicate. Tags shall be regarded as an opaque term; users shall not rely on its type.

#### Template and modes

    threaded_call(@callable)
    threaded_call(@callable, -nonvar)

#### Errors

Goal is a variable:
  `instantiation_error`
Goal is neither a variable nor a callable term:
  `type_error(callable, Goal)`
Tag is not a variable:
  `type_error(variable, Goal)`

#### Examples

Prove `Goal` asynchronously in a new thread:
  `threaded_call(Goal)`
Prove `::Message` asynchronously in a new thread:
  `threaded_call(::Message)`
Prove `Object::Message` asynchronously in a new thread:
  `threaded_call(Object::Message)`