Thread
执行过程中的执行单元。
描述
进程中的执行单元。可以同时在 Object 上运行方法。如果使用共享对象,建议通过 Mutex 或 Semaphore 使用同步。
注意: 如果代码在线程中运行,断点不会中断。这是 GDScript 调试器的当前限制。
教程
方法
get_id ( ) const | |
is_active ( ) const | |
is_alive ( ) const | |
start ( Object instance, String method, Variant userdata=null, Priority priority=1 ) | |
wait_to_finish ( ) |
枚举
enum Priority:
PRIORITY_LOW = 0 —- 一个线程以比正常情况下更低的优先级运行。
PRIORITY_NORMAL = 1 —- 具有标准优先级的线程。
PRIORITY_HIGH = 2 —- 以比正常情况更高的优先级运行的线程。
方法说明
- String get_id ( ) const
返回当前 Thread
的 ID,在所有线程中唯一标识它。如果 Thread
未运行,则返回空字符串。
- bool is_active ( ) const
如果此 Thread
已启动,则返回 true
。一旦开始,这将返回 true
,直到它使用 wait_to_finish 加入。要检查 Thread
是否仍在执行其任务,请使用 is_alive。
- bool is_alive ( ) const
当本 Thread
线程正在等待时,返回 true
。在需要确定调用 wait_to_finish 是否会阻塞调用线程时非常有用。
要检查 Thread
线程是否可合并,请使用 is_active。
启动一个新的Thread
线程,在对象instance
上运行method
,并将userdata
作为一个参数传递。即使没有传递userdata,method
也必须接受一个空的参数。Thread
的priority
优先级可以通过传递Priority枚举中的一个值来改变。
成功时返回@GlobalScope.OK,失败时返回@GlobalScope.ERR_CANT_CREATE 。
- Variant wait_to_finish ( )
合并 Thread
并等待它完成。返回传递给 start 的方法的输出。
应在两种情况下使用:想要获取 Thread
调用的方法所返回的值,或者在释放包含 Thread
的实例之前。
如果想确定调用本方法是否会阻塞调用线程,请检查 is_alive 是否为 false
。
注意: Thread
在完成合并后将被销毁。如果要再次使用它,则必须创建它的新实例。