linux 共享内存 可不可以不加锁呢? 系统有两个进程,一个负责写入,一个负责读取
2个回答
展开全部
Linux共享内存可以不用加锁,不过需要一种机制来标记共享内存的读写状态;
也就是说要让两个进程知道:
1)负责写入的进程,必须知道当前共享内存是否可以写入,上一次的写入内容是否有被负责读取的进程读走;
2)负责读取的进程,必须知道当前共享内存是否需要读取,防止重复读取。
一般的这种标记机制是通过以下方式来简单实现:
1)通过读写锁来控制;
2)共享内存上设置一个地方,专门存放当前共享内存的读写状态;
也就是说要让两个进程知道:
1)负责写入的进程,必须知道当前共享内存是否可以写入,上一次的写入内容是否有被负责读取的进程读走;
2)负责读取的进程,必须知道当前共享内存是否需要读取,防止重复读取。
一般的这种标记机制是通过以下方式来简单实现:
1)通过读写锁来控制;
2)共享内存上设置一个地方,专门存放当前共享内存的读写状态;
追问
非常感谢您的答复.
如您所说,那么共享内存是不需要做原子操作的吧,由于我这边对共享内存中的数据没任何读写控制要求,所以我在两个进程中可以随意操作吧.
之前想过用信号量机制,但是好像多此一举了...
是不是这样的呢?
追答
如果你代码真对共享内存没有任何读写控制要求,那可以这样不需要信号量机制
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询