为了账号安全,请及时绑定邮箱和手机立即绑定

Linux下怎么实现这样的锁?

Linux下怎么实现这样的锁?

米脂 2019-03-29 22:08:22
语言是c/c++需求是这样的,有一段共享内存大家都可以读,只有一个进程可以写,然后大家读都没有问题,但是写的时候必须所有人都不在读的时候才可以写。两组lock操作,第一组把一个ref+-1,然后允许读取。第二组lock的时候先等待ref=0,这时候所有第一种lock会被堵塞,然后等ref=0开始读写这部分内存,unlock之后放行第一种lock。这种锁如何实现,或者说叫什么名字?我自己想的办法是另开一个进程,然后和这些进程建立一个socket,然后其他进程向这个进程请求资源,请求之后开始read,当资源空闲的时候就直接write,否则就加入一个cleanup队列,直到写入操作介绍之后再一起write,但是我感觉这样太浪费资源来的。。
查看完整描述

2 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

楼主需要的是进程(process)之间共共享内存,那么这个时候pthread无法帮忙,因为pthread是线程(thread)级别的锁。进程之间共享内存一般通过memorymappedfile来进行,参见mmap函数。如果需要枷锁操作,可以根据情况选用文件锁fcntl,或者信号量(Semaphores)semget函数来进行读写的限制。
如果楼主本意是线程的话,那么pthread_rwlock应该就够了。
                            
查看完整回答
反对 回复 2019-03-29
  • 2 回答
  • 0 关注
  • 411 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号