thread_create/4¶
thread_create(: Goal, - Id, + Options)*
Create a new Prolog thread (and underlying C-thread) and start it by executing Goal. If the thread is created successfully, the thread-identifier of the created thread is unified to Id. Options is a list of options. Currently defined options are:
-
stack Set the limit in K-Bytes to which the Prolog stacks of this thread may grow. If omitted, the limit of the calling thread is used. See also the commandline
-S
option. -
trail Set the limit in K-Bytes to which the trail stack of this thread may grow. If omitted, the limit of the calling thread is used. See also the commandline option
-T
. -
alias Associate an alias-name with the thread. This named may be used to refer to the thread and remains valid until the thread is joined (see thread_join//22).
-
at_exit Define an exit hook for the thread. This hook is called when the thread terminates, no matter its exit status.
-
detached If
false
(default), the thread can be waited for using thread_join//22. thread_join//22 must be called on this thread to reclaim the all resources associated to the thread. Iftrue
, the system will reclaim all associated resources automatically after the thread finishes. Please note that thread identifiers are freed for reuse after a detached thread finishes or a normal thread has been joined. See also thread_join//22 and thread_detach//11.
The Goal argument is copied to the new Prolog engine. This implies further instantiation of this term in either thread does not have consequences for the other thread: Prolog threads do not share data from their stacks.