gpt4 book ai didi

c++ - 如何在不使用 C++ 锁的情况下防止竞争条件?

转载 作者:太空宇宙 更新时间:2023-11-04 14:46:26 24 4
gpt4 key购买 nike

在 C++ 中如何在不锁定或不使用互斥锁/信号量的情况下防止竞争条件?我正在处理一个嵌套的 for 循环,我将在其中设置一个数组中的值:

for (int i = 0; i < m; ++i)
for (int j = 0; j < n; ++j)
for (int k = 0; k < o; ++k)
array[k] += foo(...);

或多或少,我想处理这个问题,这样我就可以确保同时运行的不同线程不会同时写入数组[k]。关于如何处理这个问题有什么建议吗?

编辑:我在 Linux 机器上运行,我还必须使用 Intel 编译器。我将使用“icc”而不是“gcc”来编译代码。

最佳答案

对于这个特定的循环,将其翻转过来。将 k 放在外面,然后您可以将 k=0 输出到与 k=1 不同的线程,依此类推。

只要 foo() 不依赖于 array[k] where k != it's current k,那么你就是黄金。

关于c++ - 如何在不使用 C++ 锁的情况下防止竞争条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2711430/

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