MCU 周期服务的共享状态: 读改写原子性、拒绝重入与锁的位置
在「一个工作线程 + 多个命令入口 + 共享状态」的 MCU 服务里,偶发缺陷大多来自三处:读改写被别的线程插进来、派发过程被重入、锁散落在各个分支里。本文给出三个低成本的收敛办法,并用两种写法的代码指标做对照。
在「一个工作线程 + 多个命令入口 + 共享状态」的 MCU 服务里,偶发缺陷大多来自三处:读改写被别的线程插进来、派发过程被重入、锁散落在各个分支里。本文给出三个低成本的收敛办法,并用两种写法的代码指标做对照。
对一套已经基于「中断 + 线程 + IPC」自洽的嵌入式模块群,引入 Reactor 事件循环(libev)在大多数模块上是净成本,本质是「第二套并发模型叠第一套」。是否值得,取决于两个先决条件:数据源能否映射成 fd、模块是否已有完整的并发机制。
面向 4 核 ARM-Linux、32-256MB RAM、-fno-exceptions 的工业嵌入式场景,newosp 采用事件驱动消息总线 + 固定线程预算 + 可移植 I/O 抽象的并发架构,涵盖零堆分配、线程预算与背压控制。