gpt4 book ai didi

c# - .Net CompareExchange 重新排序

转载 作者:太空狗 更新时间:2023-10-29 21:08:40 25 4
gpt4 key购买 nike

编译器或处理器能否重新排序以下指令,以便另一个线程看到 a == 0b == 1

假设 int a = 0, b = 0; 某处。

System.Threading.Interlocked.CompareExchange<int>(ref a, 1, 0);
System.Threading.Interlocked.CompareExchange<int>(ref b, 1, 0);

最佳答案

没有。使用 Interlock 将发出完整内存栅栏的信号。 “也就是说,在调用 Interlocked 方法之前写入的任何变量都在 Interlocked 方法之前执行,而在调用之后执行的任何变量都在调用之后执行。” [1] 他们使用 volatile 读/写方法来防止 a = 1 之前的 b = 1

[1]:Jeffrey Richter:“通过 C# 实现 CLR - 第三版”第 V 部分线程,第 803 页

关于c# - .Net CompareExchange 重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25493465/

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