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

C# .NET 64位系统上的原子读/写大小?,c#,.net,64-bit,C#,.net,64 Bit,C#规范指出,对于32位或更小的类型(以及引用),读写是原子的。因此,如果我的类中有一个Int32字段,我知道多个线程可以读写它,它们在操作中是原子的,因此值总是一致的(虽然缓存问题是一个潜在的问题,但这不是问题的重点) 64位系统也是这样吗?如果我编译64位的应用程序,这是否意味着Int64仍然被认为不是原子的?或者现在我可以考虑一个In64在读/写中是原子的,因为它是在一个64位的系统上编译和运行的吗?< /P> < P>它应该是相同的(不是原子的)-值必须被正确对齐,以允许64位值具有原子

C#规范指出,对于32位或更小的类型(以及引用),读写是原子的。因此,如果我的类中有一个Int32字段,我知道多个线程可以读写它,它们在操作中是原子的,因此值总是一致的(虽然缓存问题是一个潜在的问题,但这不是问题的重点)

64位系统也是这样吗?如果我编译64位的应用程序,这是否意味着Int64仍然被认为不是原子的?或者现在我可以考虑一个In64在读/写中是原子的,因为它是在一个64位的系统上编译和运行的吗?< /P> < P>它应该是相同的(不是原子的)-值必须被正确对齐,以允许64位值具有原子读写,但据我所知,CLR始终不需要按这样的方式对齐<代码> Int64 < /Cord>值。
查看一些关于它的讨论。

如果有疑问,当然,
是互锁的
——但这是一个非常好的问题。