当使用mmap
/msync
/munmap
时,读/写是原子的吗?(假设磁盘将在关机时完成任何挂起的写入)
最佳答案
涉及多个页面或多个磁盘扇区的操作从来就不是原子的。
研究两个特定事物之间的一致性可能更有用。
例如,在两个使用同一文件的mmap(2)的程序或线程之间,它们已经是一致的,并且msync(2)
与此无关。所有的msync
操作都会导致内核将修改过的页面写入底层存储系统。。。对于同样使用mmap()的同一系统上的其他读写器来说,这是没有必要或没有帮助的。
如果要使用不同的工具(共享存储或非mmap I/O)并同步访问,则需要一个真正的信号量或联锁。我不认为msync()有用。为了给你更多的帮助,我们需要知道更多关于你试图同步的内容。