gpt4 book ai didi

c++ - 在 C++ 中线程化 for 循环

转载 作者:可可西里 更新时间:2023-11-01 14:44:27 29 4
gpt4 key购买 nike

我正在尝试找出从本质上线程化 for 循环的最佳方法。例如,如果我有以下循环:

for(int i = 0; i < n; i++)
doSomethingThreadSafe(i);

这将在 Windows 平台上进行。我试过为每个处理器创建一个线程,然后尝试为每个处理器尽可能均匀地划分 n。然后我将必要的数据传递给每个线程,然后使用 WaitForMultipleThreads。有一个更好的方法吗?我不想使用任何其他库,例如 boost。

理想情况下,我想要一些通用的(也许是模板化的)方法来解决这个问题。即

threaded_for(0, n, doSomethingThreadSafe);

如果最好/最有效的方法是使用一个库,那么添加这个库需要多少工作,以及在这个例子中将如何使用它。不过,我更喜欢不需要添加其他东西的解决方案。

最佳答案

最简单的方法是 openMP - visual studio 支持它作为标准,你只需在循环中添加几个神奇的#pragma 并使用你拥有的所有内核!

最好的学习方法是如何不去做 - 32 OpenMP Traps For C++ Developers

另一种方法 - 但稍微复杂一点 Intel TBB

关于c++ - 在 C++ 中线程化 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4835192/

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