当前位置: 技术问答>linux和unix
linux下共享内存 函数shmat()的使用!
来源: 互联网 发布时间:2016-11-27
本文导语: 在使用共享内存的时候,申请了一块连续的内存段,启动两个线程,一个不断地向其中写,一个不断地读取数据。 通过共享内存的shmat()函数怎么实现? 哪个高手指点指点! | linux程序设计...
在使用共享内存的时候,申请了一块连续的内存段,启动两个线程,一个不断地向其中写,一个不断地读取数据。
通过共享内存的shmat()函数怎么实现?
哪个高手指点指点!
通过共享内存的shmat()函数怎么实现?
哪个高手指点指点!
|
linux程序设计上有例子,请看第14章第二节共享内存
|
需要采用某种同步措施,以同步两个线程的读写操作,如互斥锁、信号灯、管道..
连接共享内存之后,两个线程在获取互斥锁后做相应的操作就行了,完成之后解锁
连接共享内存之后,两个线程在获取互斥锁后做相应的操作就行了,完成之后解锁
|
通过获取共享内存的地址可使得两个线程可以找到该内存,
要做的一是读写指针的处理,二是互斥读写的处理
要做的一是读写指针的处理,二是互斥读写的处理
|
如果是线程,本来就共享所有的数据和代码空间,当然不包括堆栈空间,所以不需要使用shmat()了
当然,如果你说错了,应该是进程的话,就需要用shmat
当然,如果你说错了,应该是进程的话,就需要用shmat
|
一般共享内存和信号量(semphore)是一起使用的。