gpt4 book ai didi

c++ - 使用多个线程并行化此 for 循环的最佳方法

转载 作者:行者123 更新时间:2023-12-02 18:16:27 25 4
gpt4 key购买 nike

我目前有一个这样的代码块

UINT8* u = getResult();
for (UINT64 counter = 0; counter < MaxCount; counter++)
{
for (UINT64 index = 0; index < c_uOneMB; ++index)
{
*u++ = genValue();
}
}

现在为了让它运行得更快。我正在做这样的事情。基本上将内线程拆分为一个方法。然而,我有两个问题,我不知道如何解决。

  1. *u++ 我该如何处理?
  2. 在调用 doSomethingElse() 之前,所有线程都需要 .join()

关于如何实现这一目标有什么建议吗?

void doSomething(UINT8* u)
{
for (UINT64 index = 0; index < c_uOneMB; ++index)
{
*u++ = genValue();
}
}

UINT8* u = getResult();
for (UINT64 counter = 0; counter < MaxCount; counter++)
{
std::thread t(doSomething,u);
}

doSomethingElse();

最佳答案

根据您提供的一些细节,我只能给出以下信息:

std::generate_n(std::execution::par, getResult(), MaxCount * c_uOneMB, genValue);

关于c++ - 使用多个线程并行化此 for 循环的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71530932/

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