所以我今天开始学习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/