1

使用mmap//时,读/写是原子的吗msyncmunmap(假设磁盘将在断电时完成所有挂起的写入)

4

1 回答 1

2

涉及多个页面或多个磁盘扇区的操作从来都不是精确的原子操作。

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

例如,在两个同时使用mmap(2)文件的程序或线程之间,它们已经是连贯的并且msync(2)与此无关。所做msync的只是导致内核将修改后的页面写入底层存储系统......对于同一系统上的其他读取器和写入器也使用mmap()没有必要或没有帮助。

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

于 2013-02-11T00:25:23.770 回答