tbb::parallel_invoke只执行一次函数



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

安装了TBBsudo 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是a:

并行计算多个函数的函数模板。

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

在你的例子中,你传递了两个函数。打印"你好,而另一个";TBB !"。它们可能并行运行,但每个将运行一次。所以总的来说,它们将打印这两个字符串一次。

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

最新更新