【发布时间】:2019-07-27 03:21:05
【问题描述】:
在 2019 年,是否有一种与平台无关(Intel、AMD、Windows、*nix 等)的方式来简单地并行化 for 循环,并且使用最少的额外代码来使用所有可用的内核。在这里,假设 for 循环中的代码是以线程安全的方式编写的。我们还假设支持最新最好的语言版本。
假设这个简单的代码就是我所拥有的:
std::vector<SomeObject> objects;
for (const auto& object: objects) {
// do some thread-safe work with object
// how to parallelize this?
}
【问题讨论】:
-
虽然副本是正确的,但大多数答案都已经过时了。请参阅
std::for_each,它接受允许并行化的执行策略。 -
@FrançoisAndrieux 如果该问题有更新、更好的答案,没有理由不添加它。
-
嗯,为什么警察机器人在问这个问题时没有向我提出这个问题?该机器人需要改进。
-
执行策略为std::execution::parallel_policy 的std::for_each 怎么样?
-
@Caleb 在 C++17 不存在时被询问。这个问题似乎是重复的,但却是一个未解决的问题。特别是随着多核 PC 的普及。
标签: c++