msync是原子的吗?

时间:2013-02-11 00:10:07

标签: c unix memory-mapping

使用mmap / msync / munmap时,是读/写原子? (假设磁盘在断电时将完成任何挂起的写入)

1 个答案:

答案 0 :(得分:2)

涉及多个页面或多个磁盘扇区的操作永远不会是原子的。

调查两个特定事物之间的一致性可能更有用。

例如,在两个程序或线程之间 mmap(2) - 同一个文件,它们已经连贯,msync(2)与此无关。所有msync都会导致内核将修改后的页面写入底层存储系统 ...对于同一系统上的其他读者和编写者而言,使用< EM> MMAP()的。

如果要使用其他工具(共享存储或非mmap I / O)并同步访问,则需要一个真正的信号量或互锁。我不认为msync()可能有用。为了给您更多帮助,我们需要了解您正在尝试同步的内容。