Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Thread¶
Inherits: RefCounted < Object
A unit of execution in a process.
Description¶
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.
Warning:
To ensure proper cleanup without crashes or deadlocks, when a Thread's reference count reaches zero and it is therefore destroyed, the following conditions must be met:
It must not have any Mutex objects locked.
It must not be waiting on any Semaphore objects.
wait_to_finish should have been called on it.
Tutorials¶
Methods¶
get_id ( ) const |
|
is_alive ( ) const |
|
is_started ( ) const |
|
wait_to_finish ( ) |
Enumerations¶
enum Priority:
Priority PRIORITY_LOW = 0
A thread running with lower priority than normally.
Priority PRIORITY_NORMAL = 1
A thread with a standard priority.
Priority PRIORITY_HIGH = 2
A thread running with higher priority than normally.
Method Descriptions¶
String get_id ( ) const
Returns the current Thread's ID, uniquely identifying it among all threads. If the Thread has not started running or if wait_to_finish has been called, this returns an empty string.
bool is_alive ( ) const
Returns true
if this Thread is currently running the provided function. 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_started.
bool is_started ( ) const
Returns 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.
Error start ( Callable callable, Priority priority=1 )
Starts a new Thread that calls callable
.
If the method takes some arguments, you can pass them using Callable.bind.
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 ( )
Joins the Thread and waits for it to finish. Returns the output of the Callable 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 Thread.
To determine if this can be called without blocking the calling thread, check if is_alive is false
.
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.