方法
GioTaskrun_in_thread
自:2.36
声明 [来源位置]
void
g_task_run_in_thread (
GTask* task,
GTaskThreadFunc task_func
)
描述 [来源位置]
在另一个线程中运行task_func
。当task_func
返回时,task
的‘GAsyncReadyCallback
将在task
的‘GMainContext
中调用来处理。
这将在任务完成之前保持对task
的引用。
有关如何处理task_func
的更多详细信息,请参阅GTaskThreadFunc
。
尽管GLib目前对通过g_task_run_in_thread()排队的任务使用了速率限制,但不应该假设它总是这样做。如果您有大量的任务要运行(数十个任务),但又不希望它们同时运行,那么一次应该只排队有限数量的任务(大约十个)。
请注意,如果您的任务依赖于其他任务完成,使用此函数导致其他任务也使用此函数并足够多(约十个)的它们在依赖链中执行,可能导致活锁,因为这将耗尽线程池。如果这种情况可能发生,请考虑显式使用单独的工作线程或线程池,而不是使用g_task_run_in_thread()。
自:2.36
参数
task_func
-
类型:
GTaskThreadFunc
一个
GTaskThreadFunc
。