基于无锁消息总线的观察者模式: 零堆分配、单线程消费
基于无锁 MPSC 消息总线,实现嵌入式场景下的数据分发架构。提供两种方案: Component 动态订阅版和 StaticComponent 零开销编译期分发版。单文件 ~100 行,零堆分配,单 worker 线程处理所有订阅者。
基于无锁 MPSC 消息总线,实现嵌入式场景下的数据分发架构。提供两种方案: Component 动态订阅版和 StaticComponent 零开销编译期分发版。单文件 ~100 行,零堆分配,单 worker 线程处理所有订阅者。
面向 4 核 ARM-Linux、32-256MB RAM、-fno-exceptions 的工业嵌入式场景,newosp 选择了事件驱动消息总线 + 固定线程预算 + 可移植 I/O 抽象的并发架构。本文从约束出发,展开 AsyncBus (CAS 无锁 MPSC + 优先级准入)、Executor 家族 (SingleThread/Pinned/Realtime)、IoPoller (epoll/poll 编译期选择) 三层设计,详解零堆分配保证、线程预算计算、背压控制机制和 I/O 线程解耦模式,附完整端到端示例和性能数据。
本文基于一个实际的线程间消息传递需求(Windows 风格的 SendMessage/PostMessage),分析传统 mutex + priority_queue + promise/future 方案的工程缺陷,然后用 MCCC 无锁消息总线重新实现,并通过完整的测试和 Sanitizer 验证。
无锁编程的基础性原理文章。从 CAS 原子操作的硬件实现出发,严格定义 lock-free 与 wait-free 的进展保证差异,深入分析 ABA 问题及其解决方案,阐明 acquire-release 内存序的必要性,最终以 SPSC/MPSC/MPMC 三种队列模式为主线,展示无锁数据结构从设计到工程落地的完整知识体系。
以激光雷达点云处理流水线为主线,展示 newosp C++17 事件驱动架构如何解决工业传感器系统的三大工程难题: 零堆分配消息传递 (CAS 无锁 MPSC + variant 值语义)、可建模的状态管理 (层次状态机 LCA + Guard)、以及微秒级确定性调度。从端到端数据流切入,逐层拆解 AsyncBus、HSM、SPSC 如何协同支撑一条完整的工业数据处理流水线。