c++ - tbb::parallel invoke 仅执行一次函数

标签 c++ parallel-processing tbb

所以我今天开始学习TBB。我在 Ubuntu 系统上工作,所以使用 sudo apt 安装了 TBB

sudo apt-get install libtbb-dev

现在我正在尝试编译并运行 HELLO_TBB

#include <iostream>
#include <tbb/tbb.h>

int main() { 
  tbb::parallel_invoke(
    []() { std::cout << " Hello " << std::endl; },
    []() { std::cout << " TBB! " << std::endl; }
  );
  return 0;
}

当尝试编译它时,我得到下一个注释:

$ g++ Hello_TBB.cpp -o test -ltbb

In file included from Hello_TBB.cpp:2:
/usr/local/include/tbb/tbb.h:21:154: note: #pragma message: TBB Warning: tbb.h contains deprecated functionality. For details, please see Deprecated Features appendix in the TBB reference manual.
   21 | ee Deprecated Features appendix in the TBB reference manual.")

当运行代码时,它实际上只打印一次 Hello TBB! 是这样的吗?或者我错过了什么?那张纸条是怎么回事?

最佳答案

关于输出:
tbb::parallel_invoke是:

Function template that evaluates several functions in parallel.

正如您在链接中看到的,您可以传递多个函数,tbb 框架将尝试并行运行它们(每个函数在单独的线程中)。每个函数都会执行一次。
请注意,并行性级别无法保证,并且取决于您的系统属性和硬件。

在你的例子中,你传递了两个函数。一个打印“Hello”,另一个打印“TBB!”。它们可能并行运行,但每个都会运行一次。所以总的来说,他们会打印这两个字符串一次。

关于注释:
具体我也不太熟悉。一般来说,废弃的函数是那些不鼓励使用的函数,因为它们可能会在未来的版本中被删除。我不认为 tbb::parallel_invoke 是这种情况,但您可以在上面的文档链接中进行验证。

关于c++ - tbb::parallel invoke 仅执行一次函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72395426/

相关文章:

c++ - 结构的 Xcode typedef 创建错误/警告

c++ - 如何制作一个动态大小的数组?动态数组的一般用法(也可能是指针)?

c# - 在 WCF 方法中使用 Task.WaitAll

r - GA算法并行计算时返回 "non-numeric argument to binary operator"

c++ - TBB 并发 vector 是否支持旧的 C 风格循环?

performance - Opencv级联训练时间

c++ - tbb:concurrent_hash_map<K,V>:英特尔线程构建模块 (TBB) 的示例代码

c++ - 使用单射函数索引数组时优化 g++

c++ - 什么是类中的内联数据?

python - python 中的并行编程(嵌套循环)