如何在intel TBB中同时运行两个不同的函数作为不同的任务
How can we concurrently run two different functions as different task in intel TBB?
假设我有两个函数fun1()和fun2()。我想在英特尔线程构建块上同时运行它们。与openmp一样,我可以使用#pragma omp节同时运行两个不同的函数。我们如何使用英特尔TBB做同样的事情?
parallel_invoke在大多数情况下是实现此目的的好方法,并且使用TBB为此目的提供的最高级别的API。在TBB中还有其他方法可以做到这一点,使用较低级别的api,这可能对您有用。下一个较低级别的API方法是创建一个新的task_group。进一步说,TBB中最低级别的API允许您创建自己的任务树,它可以创建任意的并行模式。如果您要做到这一点,您需要了解的关键是您可以一次创建多个根任务。这在某些文档中并不明显,但是一旦您了解了这一点,您就很可能能够创建任何您能想到的并行模式。
使用Intel®线程构建块优化游戏架构这篇文章展示了使用这种最低级别API来实现您所描述的目的的示例,以及其他一些您可能会发现有用的示例。
相关文章:
- 如何巧妙地编写两个函数——一个用于检查是否存在解决方案,另一个用于获取所有解决方案
- 两个函数模板候选项.将一个参数作为引用后,选择不太专业的模板
- 如何比较两个函数的速度和性能
- 如何在构造器的成员初始值设定项列表中调用两个函数?
- 如何将这两个函数组合成一个实现?
- 将具有相反操作数的两个函数重构为一个
- 创建整数的 2D 数组,该数组将使用两个函数用随机数填充矩阵.我做错了什么?
- 具有相同主体的两个函数具有不同的名称
- 通过作为类的公共成员的两个函数将函数作为参数传递
- 如何使用排序和比较这两个函数在 c++ 中对字符数组进行排序?
- 是否可以在C++中将两个函数一起添加
- C++ 两个函数除了一行之外执行相同的操作
- 如何编写连接两个函数的函数
- 如何执行两个函数参数具有相同的模板类型
- 当两个函数位于一行中时,堆栈框架的样子
- 为什么这两个函数的行为不同
- 为什么当我有两个函数时编译器没有显示错误,一个将采用基类,一个将派生类作为参数
- 系统堆栈中的两个函数的递归调用(将不同数量的数组作为参数传递)有什么区别
- 如何在一个构造函数中使用两个可变参数模板参数来绑定两个函数
- 如何在c++中的两个函数中传递对象的同一实例