Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 并行调用tbb中的相同方法_C++_Multithreading_Parallel Processing_Tbb - Fatal编程技术网

C++ 并行调用tbb中的相同方法

C++ 并行调用tbb中的相同方法,c++,multithreading,parallel-processing,tbb,C++,Multithreading,Parallel Processing,Tbb,我可以使用parallel_invoke多次执行同一个函数吗 就像我有遍历字符串的函数扫描一样,我可以让相同的多个任务对它进行操作。是的,你可以 或者,您可以使用任务组: 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();

我可以使用parallel_invoke多次执行同一个函数吗

就像我有遍历字符串的函数扫描一样,我可以让相同的多个任务对它进行操作。

是的,你可以

或者,您可以使用任务组:

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();

是的,没有任何东西会阻止您,但您有责任确定这些操作是否会导致竞争条件或并发问题,从而破坏您的程序。

是否有其他方法可以根据我拥有的内核数运行这些操作?我想问您是否需要#包括@aTm no,只有在明确启动任务计划程序时才需要它,这是您不应该做的。@aTm注意,您可以投票并接受答案,特别是如果您发现答案有用并且可以使用它们的代码的话。@StephanDollberg他是新来的,所以我投票支持他:P(他至少接受了答案)也许你可以添加一些伪代码来描述你想做什么?