当前位置: 技术问答>linux和unix
初学者关于共享内存的几个问题-->
来源: 互联网 发布时间:2015-10-13
本文导语: 1. 为什么在主程序退出后,由该程序创建的共享内存区还存在? (shmget, shmat, shmdt) 2. 为什么不同的进程或程序可以同时修改内存区数据? 3. 为什么不同的子线程通过shmat得到的内存地址不一样,而主,子进程...
1. 为什么在主程序退出后,由该程序创建的共享内存区还存在? (shmget, shmat, shmdt)
2. 为什么不同的进程或程序可以同时修改内存区数据?
3. 为什么不同的子线程通过shmat得到的内存地址不一样,而主,子进程得到的却一样?
以上这些问题是在VMware中确认的。
2. 为什么不同的进程或程序可以同时修改内存区数据?
3. 为什么不同的子线程通过shmat得到的内存地址不一样,而主,子进程得到的却一样?
以上这些问题是在VMware中确认的。
|
1、共享内存是系统级别的,只要机器不重新启动,这个共享内存是一直存在(当然可以用ipcrm 删除)
2、可以同时修改可能是因为此快内存没有用锁或者互斥变量或其他信号量等控制
3、子进程复制父进程的数据区域。
2、可以同时修改可能是因为此快内存没有用锁或者互斥变量或其他信号量等控制
3、子进程复制父进程的数据区域。
|
可以使用信号量,等。