从共享内存中同时读取是否安全?

时间:2017-07-12 09:33:20

标签: linux shared-memory

我正在共享一些内存(使用shm_open创建,我在多个进程中使用mmap映射不同的“区域”。我正在使用命名信号量来同步对该内存的访问。

我在该内存中有一个只读区域(它由创建共享内存对象的进程设置)。我是否仍需要使用互斥锁让进程读取该区域?如果可以同时读取该区域,我可以删除命名信号量并分享未命名的信号量。

问题类似于here提出的问题,但OP可能不够明确。

1 个答案:

答案 0 :(得分:0)

根据多个来源,读取相同的内存似乎不会引入竞争条件,因此无需锁定即可完成。我有几个系统运行了几个月,其中一个进程正在编写(具有全局锁),而另外两个进程连续读取同一共享内存,而我从来没有遇到过问题。