Linux 并发读取共享内存是否安全?

Linux 并发读取共享内存是否安全?,linux,shared-memory,Linux,Shared Memory,我正在跨多个进程共享一些内存(使用shm_open创建,其中我使用mmap映射不同的“区域”)。我使用命名信号量来同步对该内存的访问 我在内存中有一个只读区域(它是由创建共享内存对象的进程设置的)。我是否仍然需要使用互斥体让进程读取该区域?如果可以同时读取该区域,我可以删除命名的信号量,而共享未命名的信号量 这个问题与所问的问题类似,但可能OP不够清楚。根据多个来源,读取同一内存似乎不会引入竞争条件,因此可以在不锁定的情况下完成。我有几个系统运行了几个月,其中一个进程写入(带有全局锁),另外两个

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

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


这个问题与所问的问题类似,但可能OP不够清楚。

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

只要共享内存在任何只读访问之前设置,并且在初始化之后从未更改,您就可以安全地进行并发读取。另请参阅“单写多读”模式。例如,和。可能重复的