Sch*_*999 6 .net c# multithreading pointers thread-safety
我正在查看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/
Pet*_*hie 13
long是在CPU上的原子写入和具有64位字的平台.例如,如果您在64位计算机上运行32位.NET应用程序,写入long将不是原子的.
请注意,如果您无法确保编译器不优化对该类型变量的访问,则原子性几乎毫无意义.例如,你不能装饰一个long领域volatile.
对64位字段的操作保证仅在64位运行时环境中是原子的
http://www.albahari.com/threading/part4.aspx
如果您在64位版本的CLR中的64位操作系统上运行C#代码,那么64位双精度和长整数的读写也保证是原子的