tbb::parallel_invoke 只执行一次函数

tbb::parallel_invoke excuting the functions only once

所以我今天才开始学习 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.")

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

关于输出:
tbb::parallel_invoke 是一个:

Function template that evaluates several functions in parallel.

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

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

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