在C ++多线程应用程序中,设置最大并发线程数

时间:2019-05-15 12:49:43

标签: c++ multithreading

我在Windows环境中工作(Visual Studio 2019)。我想创建一个必须执行多次的c ++应用程序:比如说10000次。 我想使用多个线程来实现这一点,当然我想限制并发线程的数量,比如说20。 换句话说,我想做的事情与在c#应用程序中可以通过并行指令轻松完成的事情相同:

public class Program
{
    private static void Main(string[] args)
    {      
       ParallelOptions opt = new ParallelOptions();
       opt.MaxDegreeOfParallelism = 20;
        Parallel.For(0, 10000, opt, i =>
        {
            // Do the task
        });
    }
}

1 个答案:

答案 0 :(得分:0)

C ++版本可能看起来像这样:

std::vector<workpackage> workpackages;

std::for_each(std::execution::par, workpackages.begin(), workpackages.end(), [](auto& wp) {
    // work with workpackage "wp" here
});

...但是您无法确定它将使用多少个线程。如果您想获得更多控制权,则可以使用std::thread手动创建线程,并只计算已运行的线程数。