方法

GioTaskrun_in_thread

自:2.36

声明 [来源位置]

void
g_task_run_in_thread (
  GTask* task,
  GTaskThreadFunc task_func
)

描述 [来源位置]

在另一个线程中运行task_func。当task_func返回时,taskGAsyncReadyCallback将在taskGMainContext中调用来处理。

这将在任务完成之前保持对task的引用。

有关如何处理task_func的更多详细信息,请参阅GTaskThreadFunc

尽管GLib目前对通过g_task_run_in_thread()排队的任务使用了速率限制,但不应该假设它总是这样做。如果您有大量的任务要运行(数十个任务),但又不希望它们同时运行,那么一次应该只排队有限数量的任务(大约十个)。

请注意,如果您的任务依赖于其他任务完成,使用此函数导致其他任务也使用此函数并足够多(约十个)的它们在依赖链中执行,可能导致活锁,因为这将耗尽线程池。如果这种情况可能发生,请考虑显式使用单独的工作线程或线程池,而不是使用g_task_run_in_thread()。

自:2.36

参数

task_func

类型: GTaskThreadFunc

一个 GTaskThreadFunc