首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Concurrency::parallel_for中使用的线程数限制

Concurrency::parallel_for中使用的线程数限制
EN

Stack Overflow用户
提问于 2021-07-07 15:00:57
回答 2查看 610关注 0票数 2

如何限制在

代码语言:javascript
复制
Concurrency::parallel_for<int>(0, 100, 1, [&](int k) 

我看到了调度器/任务的想法,我没有在并行中使用它,因为有很多逻辑,我需要传递参数,任务的所有示例都只包含std::cout<<“嘿嘿”<

希望你有一些想法。

代码语言:javascript
复制
bool func1(int x,int y....) //A lot of params{
 Concurrency::parallel_for<int>(0, 100, 1, [&](int k) {
//a lot of logic depends on the input
}
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-16 07:30:07

我还没有使用该接口--但下面的操作可能会工作(假设有8个工作人员,100个情况下并行),否则可以调整100/8)。

代码语言:javascript
复制
Concurrency::simple_partitioner splitter(100/8);
Concurrency::parallel_for<int>(0, 100, 1, [&](int k) {
//a lot of logic depends on the input
}, splitter);

这并不是直接限制线程的数量,而是限制数据块来实现相同的功能。

这个想法也可以在https://katyscode.wordpress.com/2013/08/17/c11-multi-core-programming-ppl-parallel-aggregation-explained/ https://learn.microsoft.com/en-us/cpp/parallel/concrt/reference/simple-partitioner-class?view=msvc-160 https://learn.microsoft.com/en-us/cpp/parallel/concrt/reference/concurrency-namespace-functions?view=msvc-160#parallel_for上找到。

票数 1
EN

Stack Overflow用户

发布于 2021-07-16 06:10:46

你指的是https://learn.microsoft.com/en-us/cpp/parallel/concrt/reference/concurrency-namespace-functions?view=msvc-160#parallel_for

我不认为有一个超级简单的“一个函数调用”解决方案。根据文档,您需要更改当前调度程序的策略,以便您运行的任何parallel_for都受到调度程序的限制,只能使用特定数量的资源。因此,您需要获取当前的SchedulerPolicy,更新它的SetConcurrencyLimits(),然后通过使用修改的策略调用并发性::CurrentScheduler::Create()来更新当前策略。这应该允许您在执行parallel_for时限制总线程数。当您完成调用时,您肯定需要进行实验和测试,包括禁用您修改的调度策略。

重构代码(即parallel_for调用的块,以便每个parallel_for只执行要执行的并发线程的数量)可能更容易。这将降低效率,但可能更容易编写和维护。

参考文献:

https://learn.microsoft.com/en-us/cpp/parallel/concrt/reference/schedulerpolicy-class?view=msvc-160

https://learn.microsoft.com/en-us/cpp/parallel/concrt/scheduler-instances?view=msvc-160

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68288476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档