我们如何在intel TBB中同时运行两个不同的功能作为不同的任务?

时间:2013-03-11 06:35:53

标签: c++ intel

假设我有两个函数fun1()和fun2()。我想在intel Threading构建块上同时运行它们。在openmp中,我可以使用#pragma omp部分同时运行两个不同的函数。我们如何使用intel TBB做同样的事情?

1 个答案:

答案 0 :(得分:0)

parallel_invoke是在大多数用途中实现此目的的好方法,并使用TBB为此目的提供的最高级别的API。还有其他方法可以在TBB中使用较低级别的API执行此操作,这可能对您有用。完成此任务的下一个低级API方法是创建一个新的task_group。更进一步,TBB中最低级别的API允许您创建自己的任务树,这可以创建任意并行模式。如果你走得那么远,你需要的关键洞察力是你可以一次创建多个根任务。这在一些文档中并不明显,但是一旦你知道它,你就可以创建任何你能想象的并行模式。

文章Optimizing Game Architectures with Intel® Threading Building Blocks显示了使用此最低级API实现您描述的目的的示例,以及您可能认为有用的其他几个API。