boost::message_queue是否保证消息有序?同优先级消息是否遵循FIFO规则?
Boost.Interprocess
message_queue 同优先级消息顺序说明 官方文档中对message_queue的优先级规则说明如下:
每条消息都可设置优先级,因此高优先级消息会先于低优先级消息被读取。
针对你关心的同优先级消息顺序问题,说明如下:
- 官方公开的接口规范没有对同优先级消息的读取顺序做出强制的FIFO承诺,该行为不属于
message_queue的标准保证特性,不建议作为跨版本兼容的强依赖逻辑。 - 包括1.77.0在内的绝大多数现有Boost版本的默认
message_queue实现中,同优先级消息实际遵循先进先出(FIFO)的读取规则,该表现属于当前版本的实现细节。 - 如果业务逻辑必须保证同优先级消息按发送顺序处理,建议额外在消息体中添加自增序号做业务层校验,避免后续Boost版本实现调整导致逻辑异常。
内容的提问来源于stack exchange,提问作者Cody
相关产品推荐
相关产品推荐

