- Message Buffer保存变长消息。
- 一次Send对应一条消息。
- 一次Receive最多返回一条完整消息。
- 多次Send不会被一次Receive合并。
- 一条消息不会被拆成多次Receive。
- 接收数组必须能容纳完整消息。
- Buffer容量还包含消息长度字段开销。
- 默认使用场景仍然是单Writer、单Reader。
适用场景
Message Buffer适合:
- 不同长度的命令;
- 不同长度的协议帧;
- 日志字符串;
- 模块间变长消息;
- 一写一读的消息通道。
| 特性 | Queue | Message Buffer |
|---|---|---|
| 消息长度 | 固定 | 可变 |
| 消息边界 | 保留 | 保留 |
| 多生产者/消费者 | 支持较好 | 默认单写单读 |
| 结构体传递 | 很适合 | 需要自行定义格式 |
| 变长协议帧 | 浪费固定空间 | 更适合 |