我在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
});
}
}
答案 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
手动创建线程,并只计算已运行的线程数。