从" https://www.cs.columbia.edu/~smb/classes/s06-4118/l13.pdf"读取Linux Scheduler 我发现了一个声明:
"在32位计算机上无法以原子方式访问64位值"
我的问题是,为什么会如此?
我们可以使用锁来使其成为原子,如同一篇文章的下一篇文章中所述。如果那是真的,那么引用的是什么意思。
答案 0 :(得分:4)
根据我的评论,它们可能意味着来自内存的负载不是原子的。
32位机器上的64位字可能需要两次内存访问才能获得完整的字。在两次读取期间,可能发生上下文切换,或者可能被DMA设备覆盖。因此,您得到一半正确的值。