gpt4 book ai didi

c++ - 限制 Concurrency::parallel_for 中使用的线程数

转载 作者:行者123 更新时间:2023-12-04 07:24:32 30 4
gpt4 key购买 nike

如何限制使用的线程数

Concurrency::parallel_for<int>(0, 100, 1, [&](int k) 
我看到了调度程序/任务的想法,我没有在并行内部使用它,因为有很多逻辑,我需要传递参数,任务的所有示例都只包含 std::cout<<"Hey"<< std::endl;任务里面。
希望你有一些想法。
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
}
}

最佳答案

您指的是https://docs.microsoft.com/en-us/cpp/parallel/concrt/reference/concurrency-namespace-functions?view=msvc-160#parallel_for .
我不认为有一个 super 简单的“一个函数调用”解决方案。根据文档,您需要更改当前调度程序的策略,以便您运行的任何 parallel_for 都受到调度程序的限制,只能使用特定数量的资源。因此,您希望获取当前的 SchedulerPolicy,更新 SetConcurrencyLimits(),然后通过使用修改后的策略调用 concurrency::CurrentScheduler::Create() 来更新当前策略。这应该可以让您在 parallel_for 执行时限制总线程数。您肯定需要进行试验和测试,包括在完成调用后禁用修改后的调度策略。
重构您的代码可能更容易(即,将parallel_for 调用分块,以便每个parallel_for 仅执行您要执行的并发线程数)。这会降低效率,但可能更容易编写和维护。
引用:
https://docs.microsoft.com/en-us/cpp/parallel/concrt/reference/schedulerpolicy-class?view=msvc-160
https://docs.microsoft.com/en-us/cpp/parallel/concrt/scheduler-instances?view=msvc-160

关于c++ - 限制 Concurrency::parallel_for 中使用的线程数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68288476/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com