使用mmap
/ msync
/ munmap
时,是读/写原子? (假设磁盘在断电时将完成任何挂起的写入)
答案 0 :(得分:2)
涉及多个页面或多个磁盘扇区的操作永远不会是原子的。
调查两个特定事物之间的一致性可能更有用。
例如,在两个程序或线程之间 mmap(2) - 同一个文件,它们已经连贯,msync(2)
与此无关。所有msync
都会导致内核将修改后的页面写入底层存储系统 ...对于同一系统上的其他读者和编写者而言,使用< EM> MMAP()的。
如果要使用其他工具(共享存储或非mmap I / O)并同步访问,则需要一个真正的信号量或互锁。我不认为msync()可能有用。为了给您更多帮助,我们需要了解您正在尝试同步的内容。