进程间通信与调试全解析
1. 消息队列
当消息存于队列时,接收消息是按优先级而非顺序进行的。例如执行./posix-msgq-ex命令,会得到如下结果:
got pri 3 'No more messages.' len=18 got pri 1 'This is my first message.' len=26 got pri 1 'This is my second message.' len=27这里无需使用wait函数进行同步,也可以用mq_receive同步,但消息顺序就不确定了,实际结果取决于具体实现和操作系统调度器。
POSIX 与 System V 消息队列的区别
| 对比项 | System V 消息队列 | POSIX 消息队列 |
|---|---|---|
| 消息大小 | 只要读取值和写入值匹配,消息大小可变化 | 发送者可写可变长度消息,但读取者要提供足够空间存固定大小消息,msg_receive调用时若空间不足则失败 |
| 消息优先级 | 读取者可根据特定优先级进行基本消息过滤 | 消息严格按优先级顺序传递,读取者不能选择读取优先级,只 |