快速调整mmap文件的大小

快速调整mmap文件的大小,第1张

快速调整mmap文件大小

对于我来说,很难想象您不知道文件可以多大的上限。假设是这样,您可以通过在首次使用mmap()映射文件时提供该大小来“保留”文件的最大大小。当然,超出文件实际大小的任何访问都将导致访问冲突,但这就是您无论如何都希望其工作的方式-
您可能会争辩说,保留额外的地址空间 可确保 访问冲突,而不是使该地址范围不开放被诸如mmap()或malloc()之类的其他调用所使用。

无论如何,关键是我的解决方案,您永远不会 移动 地址范围,只更改其大小,现在锁定就在为每个线程提供当前有效大小的数据结构周围。

如果文件太多,则每个文件的最大映射都使您用尽了地址空间,那么我的解决方案将不起作用,但是这是64位地址空间的使用期限,因此希望最大映射大小没有问题。

(只是为了确保我不会忘记一些愚蠢的东西,我确实写了一个小程序说服自己,当您尝试访问超出文件大小的文件时,创建大于文件大小的映射会导致访问冲突,然后可以正常工作一旦将文件ftruncate()变大,所有文件都将从第一次mmap()调用返回的地址相同。)



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4912018.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-12
下一篇 2022-11-12

发表评论

登录后才能评论

评论列表(0条)

保存