TBB:什么是主线程?
TBB: What is a master thread?
在 TBB 的文档中,有一条关于为竞技场中的 'master' 个线程保留插槽的注释:
https://www.threadingbuildingblocks.org/docs/help/reference/task_scheduler/task_arena_cls.html
主线程可以加入竞技场中的任何线程 'slot',但工作线程不能加入为主线程保留的槽。此外,一个任务竞技场允许有多个主槽。到目前为止,一切都很好。我不清楚的是,成为主线程到底意味着什么?它是 "just" 主应用程序线程吗?如果是这样,master线程怎么可能不止一个?
从概念上讲,术语 "master thread" 是指启动并行作业的任何应用程序线程。相反,"worker thread" 是 TBB 创建的线程,它帮助主线程处理它们的工作。
具体针对task_arena
,master线程通过class的publicAPI提交作业,而worker线程通过内部接口加入arena。
从内部加入竞技场的工作线程也可以成为另一个竞技场中的主线程,以防它在第一个竞技场中执行的任务调用 task_arena::execute()
。
在 TBB 的文档中,有一条关于为竞技场中的 'master' 个线程保留插槽的注释:
https://www.threadingbuildingblocks.org/docs/help/reference/task_scheduler/task_arena_cls.html
主线程可以加入竞技场中的任何线程 'slot',但工作线程不能加入为主线程保留的槽。此外,一个任务竞技场允许有多个主槽。到目前为止,一切都很好。我不清楚的是,成为主线程到底意味着什么?它是 "just" 主应用程序线程吗?如果是这样,master线程怎么可能不止一个?
从概念上讲,术语 "master thread" 是指启动并行作业的任何应用程序线程。相反,"worker thread" 是 TBB 创建的线程,它帮助主线程处理它们的工作。
具体针对task_arena
,master线程通过class的publicAPI提交作业,而worker线程通过内部接口加入arena。
从内部加入竞技场的工作线程也可以成为另一个竞技场中的主线程,以防它在第一个竞技场中执行的任务调用 task_arena::execute()
。