跳转至

GFBackgroundWorkUtility

API Reference / Standard / 类索引

  • 路径:addons/gf/standard/utilities/jobs/gf_background_work_utility.gd
  • 模块:Standard
  • 继承:GFUtility
  • API:public
  • 类别:运行时服务 (runtime_service)
  • 首次版本:3.17.0

纯数据后台工作协调器。 统一协调 CPU/IO 线程工作、ResourceLoader 线程加载和主线程应用回调。 默认只允许纯 Variant 输入数据,避免后台线程直接触碰 Node、Resource 或 Callable。

成员概览

类型 名称 签名
信号 work_queued signal work_queued(task: GFBackgroundWorkTask)
信号 work_started signal work_started(task: GFBackgroundWorkTask)
信号 work_progressed signal work_progressed(task: GFBackgroundWorkTask, progress: float, message: String)
信号 work_completed signal work_completed(task: GFBackgroundWorkTask)
信号 work_failed signal work_failed(task: GFBackgroundWorkTask)
信号 work_cancelled signal work_cancelled(task: GFBackgroundWorkTask)
信号 work_applied signal work_applied(task: GFBackgroundWorkTask)
属性 max_threaded_tasks var max_threaded_tasks: int = 2:
属性 max_apply_per_tick var max_apply_per_tick: int = 8:
属性 max_apply_seconds_per_tick var max_apply_seconds_per_tick: float = 0.0:
属性 max_finished_tasks var max_finished_tasks: int = 128:
属性 allow_object_payloads var allow_object_payloads: bool = false
方法 init func init() -> void:
方法 tick func tick(_delta: float = 0.0) -> void:
方法 dispose func dispose() -> void:
方法 submit_cpu_work func submit_cpu_work( worker: Callable, input_data: Variant = null, apply_callback: Callable = Callable(), options: Dictionary = {} ) -> GFBackgroundWorkTask:
方法 submit_io_work func submit_io_work( worker: Callable, input_data: Variant = null, apply_callback: Callable = Callable(), options: Dictionary = {} ) -> GFBackgroundWorkTask:
方法 submit_resource_load func submit_resource_load( path: String, type_hint: String = "", apply_callback: Callable = Callable(), options: Dictionary = {} ) -> GFBackgroundWorkTask:
方法 cancel_work func cancel_work(work_id: StringName) -> bool:
方法 cancel_all func cancel_all() -> void:
方法 pause func pause() -> void:
方法 resume func resume() -> void:
方法 is_paused func is_paused() -> bool:
方法 update_work_progress func update_work_progress(work_id: StringName, progress: float, message: String = "") -> bool:
方法 get_task func get_task(work_id: StringName) -> GFBackgroundWorkTask:
方法 clear_finished_tasks func clear_finished_tasks() -> void:
方法 clear_all func clear_all() -> void:
方法 get_debug_snapshot func get_debug_snapshot() -> Dictionary:

信号

work_queued

  • API:public
signal work_queued(task: GFBackgroundWorkTask)

工作进入等待队列时发出。

参数:

名称 说明
task 工作记录。

work_started

  • API:public
signal work_started(task: GFBackgroundWorkTask)

工作开始执行时发出。

参数:

名称 说明
task 工作记录。

work_progressed

  • API:public
signal work_progressed(task: GFBackgroundWorkTask, progress: float, message: String)

工作进度变化时发出。

参数:

名称 说明
task 工作记录。
progress 当前进度。
message 进度说明。

work_completed

  • API:public
signal work_completed(task: GFBackgroundWorkTask)

工作完成时发出。

参数:

名称 说明
task 工作记录。

work_failed

  • API:public
signal work_failed(task: GFBackgroundWorkTask)

工作失败时发出。

参数:

名称 说明
task 工作记录。

work_cancelled

  • API:public
signal work_cancelled(task: GFBackgroundWorkTask)

工作取消时发出。

参数:

名称 说明
task 工作记录。

work_applied

  • API:public
signal work_applied(task: GFBackgroundWorkTask)

工作结果已在主线程应用时发出。

参数:

名称 说明
task 工作记录。

属性

max_threaded_tasks

  • API:public
var max_threaded_tasks: int = 2:

同时运行的 CPU/IO 线程任务上限。

max_apply_per_tick

  • API:public
var max_apply_per_tick: int = 8:

单帧最多执行多少个主线程应用回调。

max_apply_seconds_per_tick

  • API:public
var max_apply_seconds_per_tick: float = 0.0:

单帧主线程应用回调的最大秒数。小于等于 0 时不启用时间预算;启用时每帧仍至少尝试一个应用回调。

max_finished_tasks

  • API:public
var max_finished_tasks: int = 128:

最多保留多少个终态任务用于调试快照;设为 0 时不保留历史。

allow_object_payloads

  • API:public
var allow_object_payloads: bool = false

是否默认允许 Object、Resource、Callable、Signal 或 RID 进入线程 payload。 仅迁移旧项目或明确自行保证线程安全时才建议开启。

方法

init

  • API:public
func init() -> void:

初始化后台工作协调器并启用暂停无关处理。

tick

  • API:public
func tick(_delta: float = 0.0) -> void:

推进后台工作完成检查与主线程应用。

参数:

名称 说明
_delta 为兼容统一 tick 签名而保留的参数。

dispose

  • API:public
func dispose() -> void:

取消未完成工作、等待线程结束并清理运行时状态。

submit_cpu_work

  • API:public
func submit_cpu_work( worker: Callable, input_data: Variant = null, apply_callback: Callable = Callable(), options: Dictionary = {} ) -> GFBackgroundWorkTask:

提交 CPU 纯数据后台工作。

参数:

名称 说明
worker 后台线程回调,签名推荐为 func(input_data: Variant) -> Variant。
input_data 输入数据。默认只允许纯 Variant 容器和值。
apply_callback 主线程应用回调,签名推荐为 func(task: GFBackgroundWorkTask) -> Variant。
options 可选配置,支持 id、priority、metadata、front、allow_object_payloads。

返回:工作记录;参数无效时返回 failed 状态任务。

结构:

  • input_data: Variant,复制到工作线程的纯数据载荷;显式允许对象载荷时除外。
  • options: Dictionary,包含 id: StringName/String、priority: int、metadata: Dictionary、front: bool 和 allow_object_payloads: bool。

submit_io_work

  • API:public
func submit_io_work( worker: Callable, input_data: Variant = null, apply_callback: Callable = Callable(), options: Dictionary = {} ) -> GFBackgroundWorkTask:

提交 IO 纯数据后台工作。

参数:

名称 说明
worker 后台线程回调,签名推荐为 func(input_data: Variant) -> Variant。
input_data 输入数据。默认只允许纯 Variant 容器和值。
apply_callback 主线程应用回调,签名推荐为 func(task: GFBackgroundWorkTask) -> Variant。
options 可选配置,支持 id、priority、metadata、front、allow_object_payloads。

返回:工作记录;参数无效时返回 failed 状态任务。

结构:

  • input_data: Variant,复制到工作线程的纯数据载荷;显式允许对象载荷时除外。
  • options: Dictionary,包含 id: StringName/String、priority: int、metadata: Dictionary、front: bool 和 allow_object_payloads: bool。

submit_resource_load

  • API:public
func submit_resource_load( path: String, type_hint: String = "", apply_callback: Callable = Callable(), options: Dictionary = {} ) -> GFBackgroundWorkTask:

提交 ResourceLoader 后台资源加载。

参数:

名称 说明
path 资源路径。
type_hint 可选资源类型提示。
apply_callback 主线程应用回调,签名推荐为 func(task: GFBackgroundWorkTask) -> Variant。
options 可选配置,支持 id、priority、metadata。

返回:工作记录;参数无效或请求失败时返回 failed 状态任务。

结构:

  • options: Dictionary,包含 id: StringName/String、priority: int 和 metadata: Dictionary。

cancel_work

  • API:public
func cancel_work(work_id: StringName) -> bool:

取消指定工作。

参数:

名称 说明
work_id 工作 ID。

返回:取消成功返回 true。

cancel_all

  • API:public
func cancel_all() -> void:

取消全部未完成工作。

pause

  • API:public
func pause() -> void:

暂停启动新的 CPU/IO 线程工作;已运行和资源加载中的工作会继续推进。

resume

  • API:public
func resume() -> void:

恢复启动新的 CPU/IO 线程工作。

is_paused

  • API:public
func is_paused() -> bool:

检查是否暂停。

返回:暂停时返回 true。

update_work_progress

  • API:public
func update_work_progress(work_id: StringName, progress: float, message: String = "") -> bool:

更新工作进度。

参数:

名称 说明
work_id 工作 ID。
progress 当前进度。
message 进度说明。

返回:更新成功返回 true。

get_task

  • API:public
func get_task(work_id: StringName) -> GFBackgroundWorkTask:

获取工作。

参数:

名称 说明
work_id 工作 ID。

返回:工作记录;不存在时返回 null。

clear_finished_tasks

  • API:public
func clear_finished_tasks() -> void:

清理已完成的历史工作记录。

clear_all

  • API:public
func clear_all() -> void:

清空全部工作。若仍有线程任务运行,会先请求取消并等待线程结束。

get_debug_snapshot

  • API:public
func get_debug_snapshot() -> Dictionary:

获取调试快照。

返回:调试快照字典。

结构:

  • return: Dictionary,包含任务计数、queued_ids、running_thread_ids、resource_paths、apply_ids、finished_ids、暂停状态和 apply 时间预算。