C++ 如何在“英特尔TBB”中以不同的任务同时运行两个不同的函数?

C++ 如何在“英特尔TBB”中以不同的任务同时运行两个不同的函数?,c++,intel,C++,Intel,假设我有两个函数fun1()和fun2()。我想在“英特尔线程构建块”上同时运行这两个线程。在openmp中,我可以使用#pragma omp部分同时运行两个不同的函数。如何使用“英特尔TBB”做到这一点?对于大多数用途来说,并行调用是实现这一点的好方法,并使用TBB为此提供的最高级别API。在TBB中还有其他方法可以做到这一点,使用较低级别的API,这可能对您有用。实现这一点的下一个低级API方法是创建一个新的任务组。更进一步,TBB中最低级别的API允许您创建自己的任务树,它可以创建任意的并

假设我有两个函数fun1()和fun2()。我想在“英特尔线程构建块”上同时运行这两个线程。在openmp中,我可以使用#pragma omp部分同时运行两个不同的函数。如何使用“英特尔TBB”做到这一点?

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

本文展示了使用此最低级别API实现您描述的目的的示例,以及您可能发现有用的其他几个示例。

在TBB中使用parallel_invoke()