gpt4 book ai didi

c# - .NET 的 64 位系统上的原子读/写大小?

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

C# 规范指出,对于 32 位及更小的类型(以及引用),读取和写入是原子的。因此,如果我的类中有一个 Int32 字段,我知道多个线程可以对其进行读取和写入,并且它们在操作中将是原子的,因此值将始终保持一致(尽管缓存问题是一个潜在的问题,但这不是重点这个问题)。

在 64 位系统上也是这样吗?如果我为 64 位编译我的应用程序,这是否意味着 Int64 仍然被认为不是原子的?或者我现在可以认为 Int64 在读/写方面是原子的,因为它是为 64 位系统编译并在 64 位系统上运行的吗?

最佳答案

它应该是相同的(不是原子的)——值必须正确对齐以允许 64 位值具有原子读/写,但据我所知,CLR 不需要始终对齐 Int64 这样的值。

查看 How to guarantee 64-bit writes are atomic?对此进行一些讨论。

关于c# - .NET 的 64 位系统上的原子读/写大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7829036/

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