如何在intel TBB中同时运行两个不同的函数作为不同的任务

How can we concurrently run two different functions as different task in intel TBB?

本文关键字:两个 函数 任务 intel TBB 运行      更新时间:2023-10-16

假设我有两个函数fun1()和fun2()。我想在英特尔线程构建块上同时运行它们。与openmp一样,我可以使用#pragma omp节同时运行两个不同的函数。我们如何使用英特尔TBB做同样的事情?

parallel_invoke在大多数情况下是实现此目的的好方法,并且使用TBB为此目的提供的最高级别的API。在TBB中还有其他方法可以做到这一点,使用较低级别的api,这可能对您有用。下一个较低级别的API方法是创建一个新的task_group。进一步说,TBB中最低级别的API允许您创建自己的任务树,它可以创建任意的并行模式。如果您要做到这一点,您需要了解的关键是您可以一次创建多个根任务。这在某些文档中并不明显,但是一旦您了解了这一点,您就很可能能够创建任何您能想到的并行模式。

使用Intel®线程构建块优化游戏架构这篇文章展示了使用这种最低级别API来实现您所描述的目的的示例,以及其他一些您可能会发现有用的示例。