【发布时间】:2021-09-05 13:50:05
【问题描述】:
我正在尝试让并发在一些 C++ 代码中工作,特别是我有一组大约 10k 的子问题,我单独解决这些子问题以寻找最佳的整体解决方案。我尝试一次创建 8 个线程以同时工作并等待它们全部加入,但问题是它必须等待所有线程加入才能启动另外 8 个线程,即每组 8 个子问题仅与其最慢的解决方案一样快地解决。你如何设置它,以便始终有 8 个并发线程,即一个新线程一结束就启动一个新线程?
以下是我想转换为并行的串行代码部分:
// Implement multithreading here
for (int i = 0; i < n; i++)
{
solver.moves = sols[i];
Solution cur_sol = solver.solve(s->clone());
std::cout << "Solution " << i << " had a best possible solve of cost " << cur_sol.cost << std::endl;
if (cur_sol.cost < best_cost)
{
best = cur_sol;
best_cost = best.cost;
}
}
return best;
【问题讨论】:
-
关键字:线程池
标签: c++ multithreading concurrency