如果我使用普通的IO API读取和写入单个文件,写入将保证每个块都是原子性的。也就是说,如果我的写操作只修改一个块,那么操作系统会保证写入整个块,或者完全不写。内存映射文件和单个块的原子写入
如何在内存映射文件上实现相同效果?内存映射文件只是字节数组,所以如果我修改字节数组,操作系统无法知道什么时候我认为写入“完成”,所以它可能(即使这不太可能)换出内存就在我写块操作的中间,实际上我写了半块。
我需要某种“进入/离开关键部分”,或者在写入文件时将文件页面“钉”到内存中的某种方法。有这样的事情存在吗?如果是这样,是否可以通过常见POSIX系统& Windows进行移植?
有多少应用程序正在与您的映射文件进行交互? – Justin 2010-10-25 17:01:52
只有一个进程,即数据库服务器。 – 2010-10-26 08:23:27