ACE_Mem_Map 笔记1

      ACE太大了,学习的过程充满了坎坷,我想还是从基础开始吧,撇开ACE作为网络开发库的初衷不说,ACE也是学习操作系统相关知识的良好资源,良好的跨平台性使得它必须封装操作系统提供的各种应用程序接口,所以学习ACE基础就当作是复习操作系统吧,慢慢积累,相信总有一天我能站在平流层的高度来一睹ACE的全貌。内存映射是IPC中的一种,不过其似乎作为进程通信的一种手段在实际用途中似乎用的并不多,大多数人将其作为一种简洁高效率操作文件的手段来使用。通过strace跟踪Linux各种命令的运行可以发现里面有大量的mmap调用。作为一种低层次的系统调用,Linux和Windows下的使用方式当然不同,但是ACE提供ACE_Mem_Map这个类来统一各平台的差异性,在学习ACE的过程中,我现在都不喜欢直接使用操作系统的API了,什么都想在前面加上一个"ACE_OS::",这样我内心就会觉得稳妥多了。

       下面这个例子同样也是我从ACE源码包中tests目录中Mem_Map_Test测试代码总结提取出来的,加上了点自己的想法和注释,这是我喜欢的学习方式。写这段代码遇到一个问题浪费了点时间琢磨,我修改了映射到内存中的数据,然后想将修改保存到文件中,调用sync方法,数据却怎么都没有保存到硬盘中,查了查资料才找到问题的原因,原来作为IPC的一种,内存映射有一个选项用于设置修改仅对本进程有效(ACE_MAP_PRIVATE)还是对于共享有效(MAP_SHARED)。

        ACE_Mem_Map::map有三个重载函数,其中一个如下:

  /// Map a file specified by @a filename.
  int

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值