我可以使用 parallel_invoke 多次执行相同的功能吗
就像我有遍历字符串的函数扫描一样,我可以让相同的多个任务对其进行操作。
我可以使用 parallel_invoke 多次执行相同的功能吗
就像我有遍历字符串的函数扫描一样,我可以让相同的多个任务对其进行操作。
是的你可以。
或者,您可以使用 task_group:
tbb::task_group g;
g.run(foo);
g.run(foo);
g.wait();
如果您想像拥有 CPU 内核一样频繁地运行它,您可以这样做:
tbb::task_group g;
for(auto i = 0; i != tbb::tbb_thread::hardware_concurrency(); ++i) {
g.run(foo);
}
g.wait();
是的,没有什么能阻止您,但您有责任确定这些操作是否会导致竞争条件或并发问题,从而破坏您的程序。