加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

Windows:调整共享内存大小

发布时间:2020-12-14 04:17:00 所属栏目:Windows 来源:网络整理
导读:当我在 Windows上创建共享内存段(如CreateFileMapping(INVALID_HANDLE_VALUE,…))时,除了创建更大的段并复制数据之外,有没有办法调整它的大小? 我在MSDN中读过文件映射有一个固定的大小,但是有可能通过某种方式在同一个内存上进行新的映射吗?就像在Linux中
当我在 Windows上创建共享内存段(如CreateFileMapping(INVALID_HANDLE_VALUE,…))时,除了创建更大的段并复制数据之外,有没有办法调整它的大小?

我在MSDN中读过文件映射有一个固定的大小,但是有可能通过某种方式在同一个内存上进行新的映射吗?就像在Linux中一样,你可以使用shm_open()然后再使用ftruncate()和mmap().

简短的回答是否定的 – 一旦创建文件映射,就无法调整文件映射的大小.您描述的创建/复制序列是我知道通过系统页面文件支持的文件映射来实现此目的的唯一方法.

也就是说,您可以自己管理支持映射的文件并完成此操作.从您自己的零初始化数据文件开始,并为您调用CreateFileMapping()指定有效的句柄.

需要调整大小时,关闭映射,扩展文件,然后重新创建映射.这需要在增长/截断操作之间进行一些同步 – 这不是微不足道的,但也不应该太困难.

最后,这是一个古老的故事.增加了复杂性与性能.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读