Thread

Inherits: Reference < Object

执行过程中的执行单元。

描述

进程中的执行单元。可以同时在 Object 上运行方法。如果使用共享对象,建议通过 MutexSemaphore 使用同步。

注意: 如果代码在线程中运行,断点不会中断。这是 GDScript 调试器的当前限制。

教程

方法

String

get_id ( ) const

bool

is_active ( ) const

bool

is_alive ( ) const

Error

start ( Object instance, String method, Variant userdata=null, Priority priority=1 )

Variant

wait_to_finish ( )

枚举

enum Priority:

  • PRIORITY_LOW = 0 —- 一个线程以比正常情况下更低的优先级运行。

  • PRIORITY_NORMAL = 1 —- 具有标准优先级的线程。

  • PRIORITY_HIGH = 2 —- 以比正常情况更高的优先级运行的线程。

方法说明

返回当前 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也必须接受一个空的参数。Threadpriority优先级可以通过传递Priority枚举中的一个值来改变。

成功时返回@GlobalScope.OK,失败时返回@GlobalScope.ERR_CANT_CREATE


合并 Thread 并等待它完成。返回传递给 start 的方法的输出。

应在两种情况下使用:想要获取 Thread 调用的方法所返回的值,或者在释放包含 Thread 的实例之前。

如果想确定调用本方法是否会阻塞调用线程,请检查 is_alive 是否为 false

注意: Thread 在完成合并后将被销毁。如果要再次使用它,则必须创建它的新实例。