gpt4 book ai didi

c - 如何使用仅手动同步到磁盘的 mmap 创建检查点文件

转载 作者:太空狗 更新时间:2023-10-29 17:20:15 24 4
gpt4 key购买 nike

我需要以最快的方式定期将文件与内存同步。

我想我想要的是有一个 mmap 文件,它只能手动同步到磁盘。我不确定如何防止发生任何自动同步。

除非我手动指定,否则无法修改文件。关键是要有一个检查点文件,它在内存中保存状态的快照。我想尽可能避免复制,因为这需要相当频繁地调用,而且速度很重要。

最佳答案

您在文件的 MAP_SHARED 映射中写入内存的任何内容都被视为当时已写入该文件,就好像您使用了 write()msync() 在这个意义上完全类似于 fsync() - 它只是确保您对文件已经做出的更改被实际推送到永久存储。您无法更改它 - 这就是 mmap() 定义的工作方式。

一般来说,执行此操作的安全方法是将数据的完整一致副本写入临时文件,同步临时文件,然后以原子方式将其重命名为先前的检查点文件。这是确保检查点之间的崩溃不会给您留下不一致文件的唯一方法。任何减少复制的解决方案都需要更复杂的事务日志样式文件格式,并且对应用程序的其余部分更具侵入性(需要在内存状态更改的每个地方调用特定的 Hook ) .

关于c - 如何使用仅手动同步到磁盘的 mmap 创建检查点文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3146496/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com