linux 共享内存 可不可以不加锁呢? 系统有两个进程,一个负责写入,一个负责读取

 我来答
谋先小铺
推荐于2017-09-03 · TA获得超过825个赞
知道小有建树答主
回答量:211
采纳率:0%
帮助的人:50.9万
展开全部
Linux共享内存可以不用加锁,不过需要一种机制来标记共享内存的读写状态;
也就是说要让两个进程知道:
1)负责写入的进程,必须知道当前共享内存是否可以写入,上一次的写入内容是否有被负责读取的进程读走;
2)负责读取的进程,必须知道当前共享内存是否需要读取,防止重复读取。
一般的这种标记机制是通过以下方式来简单实现:
1)通过读写锁来控制;
2)共享内存上设置一个地方,专门存放当前共享内存的读写状态;
追问
非常感谢您的答复.
如您所说,那么共享内存是不需要做原子操作的吧,由于我这边对共享内存中的数据没任何读写控制要求,所以我在两个进程中可以随意操作吧.
之前想过用信号量机制,但是好像多此一举了...
是不是这样的呢?
追答
如果你代码真对共享内存没有任何读写控制要求,那可以这样不需要信号量机制
thinkawhile
2011-12-18 · TA获得超过300个赞
知道答主
回答量:209
采纳率:0%
帮助的人:144万
展开全部
能.并且是"要"加锁.可以使用信号量加锁.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式