消息队列本质上是位于内核空间的链表,链表的每个节点都是一条消息。每一条消息都有自己的消息类型,消息类型用整数来表示,而且必须大于 0。每种类型的消息都被对应的链表所维护,消息类型为 0 的链表记录了所有消息加入队列的顺序,其中红色箭头表示消息加入的顺序。

消息队列提供了一个从一个进程向另一个进程发送数据块的方法,每个数据块都可以被认为是有一个类型,接受者接受的数据块可以有不同的类型。它有一个不足就是每个消息的最大长度是有上限的(MSGMAX),每个消息队列的总的字节数(MSGMNB),系统上消息队列的总数上限(MSGMNI)。可以用cat /proc/sys/kernel/msgmax查看具体的数据。
消息队列的原理就这么多,可以自己创建自己的消息队列,用自己设计的id,emmmm,这个非常适合进程间通信。但是这个可能会服务器循环检查,使用信号则能避免这个问题,
信号是中断类型的,这个非常好,用信号+消息队列的方法,可以减轻服务器的负担。消除while(1)循环。
先完成消息队列,再完成信号,二者再合并 。
消息队列是一种进程间通信方式,本质为内核空间的链表,每条消息有特定类型,支持不同类型的通信需求。消息队列存在长度限制,但结合信号使用可优化服务器循环检查,减轻负担。
消息队列&spm=1001.2101.3001.5002&articleId=106155437&d=1&t=3&u=6f433197817e4df7973bd774540d86c0)
1059

被折叠的 条评论
为什么被折叠?



