日本語
Synchronization primitives make nothing faster. They make parallelism survivable — bounded queues, acyclic task graphs, and a failure policy for the branch that never reports.essay · standmeet2026.10.07 · essay
2026.10.07·2 min read#agent-os

Barriers, Deadlocks, Backpressure

Synchronization primitives make nothing faster. They make parallelism survivable — bounded queues, acyclic task graphs, and a failure policy for the branch that never reports.

屏障、死锁与背压

Fan-out 是并行的容易的那一半。难的那一半——操作系统教材留给学生挂科章节的那一半——是同步:并行工作赖以等待、汇合、以及避免把自己勒死的那些原语。Agent 系统以同样的难度顺序遇到了同样的原语。

屏障是 fan-in 的诚实面孔。合成不得开始,除非每个分支都已报告——或者除非屏障事先拿到一份针对"永远不会报告的那个分支"的政策:超时、法定人数、降级规则,都要在事前定好,因为运行时临场凑的屏障会变成人质谈判。设计 fan-in 就是设计屏障的失败政策,而失败政策就是设计的大部分。接下来是死锁:分支直接或经由一条链,循环等待彼此未完成的工件,这个环没人画过。防御是教材的防御,不体面但完备——给资源定全局顺序、禁止任务图里有环、检测并打破漏网的。一个无法拓扑排序的任务图不是计划,是未来的事故。

然后是更隐蔽的病。优先级反转:合成——全系统价值最高的一步——在等最慢、最不重要的分支,因为它攥着所有人都需要的那件工件。饥饿:在预算有限的池子里,不体面的分支(验证、清理)被新来者无限抢占,系统的债默默滚雪球。而统摄这一切的是背压:分支以机器速度生成,验证——无论靠 eval 还是靠人——以它自己更慢的速度消费。两者之间的每条队列都涨到有东西崩为止。操作系统的回答是有界队列加上阻塞生产者的纪律;agent 系统的回答是读取上限、fan-out 上限,以及让分支停下来的预算,而不是让队列去吸收的预算。

注意这些原语的共同点:没有一个让任何东西变快。它们让并行活得下去。那些得出"多 agent 不行"结论的团队,通常是在没有词汇的情况下撞上了一条无界队列或一个循环等待。词汇是存在的,六十岁了,在教材里,而且可以整段搬过来——这组对应不需要改编,只需要谦逊:用旧词称呼新事故。

ask the AI about this essay·context: “barriers, deadlocks, backpressure”
›