.NET在64位系统上的原子读写大小是多少?

7
C#规范指出,对于32位及以下的类型(以及引用类型),读写操作是原子性的。因此,如果我的类中有一个Int32字段,我知道多个线程可以读写它,并且它们的操作是原子性的,因此该值始终是一致的(虽然缓存问题可能是一个潜在的问题,但这不是本问题的重点)。
那么,在64位系统上是否也是如此呢?如果我为64位编译我的应用程序,这是否意味着Int64仍然被认为是非原子性的?或者现在我可以将Int64视为具有原子性读/写,因为它是针对64位系统编译和运行的?

1
如果有疑问,当然可以使用Interlocked - 但这是一个非常好的问题。 - Marc Gravell
1个回答

3

这应该是相同的(不是原子性的) - 值必须正确对齐,以允许64位值具有原子读/写,但据我所知CLR并没有要求始终以这种方式对齐 Int64 值。

查看如何保证64位写入是原子的? 进行一些讨论。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接