众所周知,32位处理器中一个引用占用4字节内存,而64位处理器中占用8字节。因此,处理器保证以机器自然字大小的增量进行的单个内存读取和写入将被原子地执行。
另一方面,Interlocked类中有两种方法:
public static int Exchange(
ref int location1,
int value
)
并且
public static T Exchange<T>(
ref T location1,
T value
)
where T : class
因此,问题是为什么对于Int32和引用类型需要使用Interlocked.Exchange?难道不能通过简单赋值来安全地完成,因为它是原子性的吗?