gpt4 book ai didi

C# 原子性 : assignment of int vs. long 在 x64 平台上

转载 作者:太空狗 更新时间:2023-10-29 20:59:12 24 4
gpt4 key购买 nike

我正在查看 http://msdn.microsoft.com/en-us/library/aa691278(VS.71).aspx ,表示int的读写是原子的,而long的读写可能不是。 64 位平台真的如此吗?不是 IntPtr.Size == 64 位或长吗?我是不是遗漏了什么或者语言规范不够完整?

这里还有更多想法: http://philosopherdeveloper.wordpress.com/2011/02/08/beware-assignment-atomic-assignment/

最佳答案

long 是在具有 64 位字的 CPU 平台上的原子写入。例如如果您在 64 位计算机上运行 32 位 .NET 应用程序,写入 long不是是原子的。

请注意,如果您不能确保编译器不会优化对该类型变量的访问,那么原子性几乎毫无意义。例如你不能用 volatile 修饰一个 long 字段。

Operations on 64-bit fields are guaranteed to be atomic only in a 64-bit runtime environment

http://www.albahari.com/threading/part4.aspx

if you are running C# code on a 64 bit operating system in a 64 bit version of the CLR then reads and writes of 64 bit doubles and long integers are also guaranteed to be atomic

http://blogs.msdn.com/b/ericlippert/archive/2011/05/31/atomicity-volatility-and-immutability-are-different-part-two.aspx

关于C# 原子性 : assignment of int vs. long 在 x64 平台上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12486572/

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