mirror of
https://github.com/Relintai/pandemonium_engine.git
synced 2024-12-27 14:17:37 +01:00
Relintai
1a5cba555c
* This implementation adds threads on the side of the client (script debugger).
* Some functions of the debugger are optimized.
* The profile is also now thread safe using atomics.
* The editor can switch between multiple threads when debugging.
This PR adds threaded support for the script language debugger. Every thread has its own thread local data and it will connect to the debugger using multiple thread IDs.
This means that, now, the editor can receive multiple threads entering debug mode at the same time.
- reduz
PR 76582
Will be available here after it's merged:
6b176671c4
65 lines
3.1 KiB
XML
65 lines
3.1 KiB
XML
<?xml version="1.0" encoding="UTF-8" ?>
|
|
<class name="Thread" inherits="Reference" version="3.12">
|
|
<brief_description>
|
|
A unit of execution in a process.
|
|
</brief_description>
|
|
<description>
|
|
A unit of execution in a process. Can run methods on [Object]s simultaneously. The use of synchronization via [Mutex] or [Semaphore] is advised if working with shared objects.
|
|
</description>
|
|
<tutorials>
|
|
<link title="Using multiple threads">$DOCS_URL/tutorials/performance/threads/using_multiple_threads.html</link>
|
|
<link title="Thread-safe APIs">$DOCS_URL/tutorials/performance/threads/thread_safe_apis.html</link>
|
|
<link title="3D Voxel Demo">https://godotengine.org/asset-library/asset/676</link>
|
|
</tutorials>
|
|
<methods>
|
|
<method name="get_id" qualifiers="const">
|
|
<return type="String" />
|
|
<description>
|
|
Returns the current [Thread]'s ID, uniquely identifying it among all threads. If the [Thread] is not running this returns an empty string.
|
|
</description>
|
|
</method>
|
|
<method name="is_active" qualifiers="const">
|
|
<return type="bool" />
|
|
<description>
|
|
Returns [code]true[/code] if this [Thread] has been started. Once started, this will return [code]true[/code] until it is joined using [method wait_to_finish]. For checking if a [Thread] is still executing its task, use [method is_alive].
|
|
</description>
|
|
</method>
|
|
<method name="is_alive" qualifiers="const">
|
|
<return type="bool" />
|
|
<description>
|
|
Returns [code]true[/code] if this [Thread] is currently running. This is useful for determining if [method wait_to_finish] can be called without blocking the calling thread.
|
|
To check if a [Thread] is joinable, use [method is_active].
|
|
</description>
|
|
</method>
|
|
<method name="start">
|
|
<return type="int" enum="Error" />
|
|
<argument index="0" name="instance" type="Object" />
|
|
<argument index="1" name="method" type="StringName" />
|
|
<argument index="2" name="userdata" type="Variant" default="null" />
|
|
<argument index="3" name="priority" type="int" enum="Thread.Priority" default="1" />
|
|
<description>
|
|
</description>
|
|
</method>
|
|
<method name="wait_to_finish">
|
|
<return type="Variant" />
|
|
<description>
|
|
Joins the [Thread] and waits for it to finish. Returns the output of the method passed to [method 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 [method is_alive] is [code]false[/code].
|
|
[b]Note:[/b] 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.
|
|
</description>
|
|
</method>
|
|
</methods>
|
|
<constants>
|
|
<constant name="PRIORITY_LOW" value="0" enum="Priority">
|
|
A thread running with lower priority than normally.
|
|
</constant>
|
|
<constant name="PRIORITY_NORMAL" value="1" enum="Priority">
|
|
A thread with a standard priority.
|
|
</constant>
|
|
<constant name="PRIORITY_HIGH" value="2" enum="Priority">
|
|
A thread running with higher priority than normally.
|
|
</constant>
|
|
</constants>
|
|
</class>
|