System V消息队列与同步机制详解
1. System V消息队列特性与限制
System V消息队列在某些方面与网络编程存在差异。与网络编程中的 recv 、 recvfrom 和 recvmsg 函数提供的 MSG - PEEK 标志相比,System V消息队列缺少查看消息的功能。若提供此功能,之前描述的父子进程场景(用于解决 select 问题)可以更加高效。子进程可以在 msgrcv 中指定查看标志,当有消息准备好时,只需向管道写入1个字节,然后让父进程读取消息。
1.1 消息队列限制
消息队列通常存在一些系统限制,不同实现的限制值有所不同,以下是一些常见的限制及其含义:
| 名称 | 描述 | 传统System V内核变量名 | Digital Unix 4.0B | Solaris 2.6 |
| ---- | ---- | ---- | ---- | ---- |
| msgrmax | 每个消息的最大字节数 | - | 8192 | 2048 |
| msgmnb | 任何一个消息队列的最大字节数 | - | 16384 | 4096 |
| msgmni | 系统范围内的最大消息队列数 | - | 64 | 50 |
| msgtql | 系统范围内的最大消息数 | - | 40 | 40 |
许多基于SVR4的实现还有额外的限制。 msgssz 通常为8字节,这是存
超级会员免费看
订阅专栏 解锁全文
1701

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



