tbb 中的 parallel_invoke 相同的方法

Posted

技术标签:

【中文标题】tbb 中的 parallel_invoke 相同的方法【英文标题】:parallel_invoke same method in tbb 【发布时间】:2012-04-09 15:15:37 【问题描述】:

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

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

【问题讨论】:

也许你可以添加一些伪代码来描述你想要做什么? 【参考方案1】:

是的,你可以。

您也可以使用 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();

【讨论】:

我想问你需要#include @aTm 不,只有在明确启动不应该执行的任务调度程序时才需要它。 @aTm 请注意,您可以投票和接受答案,特别是如果您发现它们有帮助并且可以使用他们的代码。 @StephanDollberg 他是新来的,所以我为他投了赞成票:P(他至少接受了答案)【参考方案2】:

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

【讨论】:

以上是关于tbb 中的 parallel_invoke 相同的方法的主要内容,如果未能解决你的问题,请参考以下文章

TBB 线程池意外增加

与 tbb::task_arena 和 tbb::task_scheduler_observer 链接时出错

tbb简介与使用

tbb::parallel_for 实例

TBB的学习

结合英特尔 IPP 和 TBB