EnriqueMark
设计模式与架构

异步行为与局部信息

2026-07 简体中文

level-triggered 跟 edge-triggered 的区分还挺有意思的,这是异步I/O中的重要概念,指的就是触发的模式。前者指的是水平触发,类似分层,用浓度来比喻的话,就是只要系统的外部环境维持在特定等级,他就会持续触发通知;而后者则是一次性的触发,只在情况发生变更的时候触发一次。这两者其实完全是同一个状态变化模式下的两种不同触发行为:LT是根据不同水平,主语绑在水平上,A级是持续发送,B级减少发送,C级不发送;ET指的是切换的瞬间,A-B,在此处发生变化,发送一次,B-C,在此处发生变化,再发送一次。

在我看来,这些实际上都是为了解释「局部信息」的对齐问题。套用我先前在 分布式系统 中类比的官僚模型来说,就是县官不如现管的问题。两侧异步行动,而因其所掌握的信息(状态也属于一种信息)错位,而导致了行为错位。县官不知现管所作之事,因而做出了错误的决策;反过来,现管不知县官所下的新命令,因而做出了错误的行动。对齐始终是只掌握局部信息的行为者共同的个问题,不只是程序,在人类的社会活动中也是如此,两者在这里就展现出了多体系统的同构性。那么我在思考,他们的解决思路是否也是在结构上存在一定相似的?从之前的情况可以看出,的确存在这样的相似性。尽管我不会说分布式软件工程就等于人类社会,但多体系统的知识仍旧可以具备一定的可迁移性。