gpt4 book ai didi

c - 强制内存排序

转载 作者:太空狗 更新时间:2023-10-29 16:07:33 24 4
gpt4 key购买 nike

如果有指针“A”和“B”,要求在对“B”的任何写入可见之前,对“A”的任何写入都应可见。如果我不允许使用锁,如果我不允许将这些变量声明为“volatile”,下面的代码能保证满足上述要求吗?

volatile temp;

*A = value1;
temp = *A;

if (temp == value1) {
*B = value2
}

最佳答案

您将需要使用内存屏障或栅栏:参见 http://en.wikipedia.org/wiki/Memory_barrier

在 Linux 内核中,您可以使用 rmb()wmb() 调用。

pthreads 下,您可以使用 pthread_barrier_wait(),但我的 pthreads 联机帮助页中似乎没有。

在 MSVC 上,查看 Force order of execution of C statements? - 其中还有一些很好的一般信息。

如果您找到一个“原子”库,它通常会包含屏障函数。

关于c - 强制内存排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22114485/

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