A unit of execution in a process.
A unit of execution in a process. Can run methods on Objects simultaneously. The use of synchronization via Mutex or Semaphore is advised if working with shared objects.
Note: Breakpoints won't break on code if it's running in a thread. This is a current limitation of the GDScript debugger.
get_id ( ) const
is_active ( ) const
is_alive ( ) const
start ( Object instance, String method, Variant userdata=null, Priority priority=1 )
wait_to_finish ( )
PRIORITY_LOW = 0 --- A thread running with lower priority than normally.
PRIORITY_NORMAL = 1 --- A thread with a standard priority.
PRIORITY_HIGH = 2 --- A thread running with higher priority than normally.
String get_id ( ) const
Returns the current
Thread's ID, uniquely identifying it among all threads. If the
Thread is not running this returns an empty string.
bool is_active ( ) const
true if this
Thread has been started. Once started, this will return
true until it is joined using wait_to_finish. For checking if a
Thread is still executing its task, use is_alive.
bool is_alive ( ) const
true if this
Thread is currently running. This is useful for determining if wait_to_finish can be called without blocking the calling thread.
To check if a
Thread is joinable, use is_active.
Starts a new
Thread that runs
method on object
userdata passed as an argument. Even if no userdata is passed,
method must accept one argument and it will be null. The
priority of the
Thread can be changed by passing a value from the Priority enum.
Returns @GlobalScope.OK on success, or @GlobalScope.ERR_CANT_CREATE on failure.
Variant wait_to_finish ( )
Thread and waits for it to finish. Returns the output of the method passed to start.
Should either be used when you want to retrieve the value returned from the method called by the
Thread or before freeing the instance that contains the
To determine if this can be called without blocking the calling thread, check if is_alive is
Note: After the
Thread finishes joining it will be disposed. If you want to use it again you will have to create a new instance of it.