社区
C语言
帖子详情
共享内存的初级菜鸟问题(在线等,谢谢)
joseph_hsw
2014-03-04 04:19:17
在多进程程序中使用Posix共享内存的时候。
每一个进程使用某同一块共享内存时候都必须完成以下步骤吗?
1.shm_open
2.ftruncate
3.mmap
如果使用完,是否需要通过
munmap
来解除文件映射呢?还是说直到进程关闭的时候才去munmap?
...全文
229
6
打赏
收藏
共享内存的初级菜鸟问题(在线等,谢谢)
在多进程程序中使用Posix共享内存的时候。 每一个进程使用某同一块共享内存时候都必须完成以下步骤吗? 1.shm_open 2.ftruncate 3.mmap 如果使用完,是否需要通过 munmap 来解除文件映射呢?还是说直到进程关闭的时候才去munmap?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jianpanlanyue
2014-03-08
打赏
举报
回复
是的。 用完后,是需要unmap的。 多个进程访问共享内存,内核是用引用计数去标记这个共享内存对象的。 每个进程用完后,unmap一下,这个引用计数就递减1,直到0的时候,意味着没有任何对象再去访问这个共享内存对象,内核就去回收资源。 当然了,一个进程如果没有unmap的话,进程结束后,操作系统在回收进程资源的时候,会去检查其内核对象引用表,发现其还持有一个共享内存对象的时候,也会主动将引用计数减一。但程序中申请、释放最好做到配对使用,养成好的代码风格和习惯。
joseph_hsw
2014-03-07
打赏
举报
回复
引用 4 楼 njynjylq 的回复:
一般如果多个进程使用共享内存的话,在所有进程,都是用完共享内存之后,就可以断开映射了
每一个进程,每一次使用都是需要 1.shm_open 2.ftruncate 3.mmap 4.munmap 这四个步骤吗?
joseph_hsw
2014-03-05
打赏
举报
回复
没人回????
njynjylq
2014-03-05
打赏
举报
回复
一般如果多个进程使用共享内存的话,在所有进程,都是用完共享内存之后,就可以断开映射了
njynjylq
2014-03-05
打赏
举报
回复
共享内存使用完后,需要断开映射
joseph_hsw
2014-03-04
打赏
举报
回复
mmap可以不可以理解为new,而munmap理解为delete呢?
C语言是
菜鸟
和大神的分水岭
本文阐述了C语言在计算机内存管理中的核心地位,通过学习C语言深入了解内存布局、进程和线程,对于提升编程技能至关重要。
flutter开发,6年
菜鸟
开发面试字节跳动安卓研发岗,
在线
面试指南_android flutter找工作
文章讨论了Android开发的关键知识点,强调了面试中考察的重点,提倡系统化学习以避免浅尝辄止。内容涵盖了面试题库、技术体系、内存管理、并发编程、性能优化等方面,鼓励读者提升到高级工程师水平并加入技术交流社区。,
Centos 6 添加自定义SNMP节点中遇到的
问题
本文详细介绍了如何在设备上配置SNMP代理,包括环境搭建、SNMP安装配置、添加自定义MIB节点等内容,并提供了常见
问题
排查方法。
Java并发系列之Java内存模型
本文深入探讨Java内存模型(JMM)的核心概念,包括
共享内存
模型、线程间通信与同步机制,以及volatile、锁和final域的内存语义。通过剖析JMM的抽象结构和重排序规则,帮助读者理解内存可见性保证。
面试题之操作系统和计算机网络
本文深入探讨了操作系统中进程与线程的区别、进程同步及通信机制,以及计算机网络中UDP与TCP的区别、三次握手原因和拥塞控制策略,附有清晰的思维导图辅助理解。
C语言
70,039
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章