gpt4 book ai didi

C++——多线程

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:45:30 24 4
gpt4 key购买 nike

我有代码:

for (int i = 0; i < (int)(kpts.size()); i++) {
perform_operation(kpts1[i], *kpts2[i]);
}

哪里kpt1kpt2std::vector<>类型。函数perform_operation需要 kpt1[i] , 对其执行操作并将其存储在 kpt2[i] 中.

看来我应该能够对此进行多线程处理。由于 for 循环的每个循环都是相互独立的,因此我应该能够与尽可能多的进程并行运行 CPU核心,对吧?

我似乎有几个 SO 问题有点回答了这个问题,但他们并没有真正了解如何并行化一个简单的 for 循环;我不确定是否阅读相同的 kpt1变量并写入相同的 kpt2变量是可能的。

还是我误会了什么? - 这不是可并行化的吗?

如果我能在 C++ 中找到解决方案,我会很高兴或 C ,但现在我卡住了。

最佳答案

假设每个 perform_operation 彼此独立运行,然后 ues,这是可并行化的。

不是简单地调用 perform_operation,而是启动一个新线程(使用 pthread_create)。您需要将参数包装在一个 struct 中(可以只是指向两个参数的指针),并将 start_routine 作为 perform_operation 的包装器传递.这将创建相关数量的线程。然后在第二个 for 循环中使用 pthread_join 等待您创建的线程退出。

这是一个粗略的轮廓。显然,一些错误处理会很有用,您可能希望每个线程连续执行多个 perform_operation,而不是每个项目一个线程。但是你应该从上面得到基本的想法。

关于C++——多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22389722/

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