Linux共享内存可以不用加锁,不过需要一种机制来标记共享内存的读写状态; 也就是说要让两个进程知道:

2)负责读取的进程,必须知道当前共享内存是否需要读取,防止重复读取。 一般的这种标记机制是通过以下方式来简单实现: 1)通过读写锁来控制; 2)共享内存上设置一个地方,专门存放当前共享内存的读写状态;
共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。
进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同步机制,互斥锁和信号量都可以。
采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。
对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,