7. 消息队列
概念与原理
这里讨论的消息队列是系统层面的 IPC 机制,不同于应用组件里的中间件。简单来说,操作系统内核维护了一个队列结构,进程通过特定的 key 值(A、B 进程约定好)来访问同一个队列。
消息队列在内核中也有描述结构体。关键点在于,数据块必须是有类型的。如果只有数据,操作系统无法区分这是 A 的还是 B 的。因此,消息队列是一种一个进程给另一个进程发送有类型数据块的方式!

消息队列和共享内存一样,都是系统级的 IPC。我们需要关注几个核心系统调用:

关键接口
主要涉及 msgget (创建/获取)、msgsnd (发送)、msgrcv (接收) 以及 msgctl (控制)。这些接口让我们能够管理队列的生命周期和数据交互。


常用命令
在终端中,我们可以使用 ipcs -q 查看消息队列,使用 ipcrm -q 删除它们。


8. 信号量
在使用共享内存时,我们面临一个棘手的问题:共享内存本身没有保护机制。多个进程同时读写同一块内存,极易导致数据竞争。这时候就需要信号量出场了。















