日本語
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 is the easy half of parallelism. The hard half — the half operating systems textbooks save for the chapters students fail — is synchronization: the primitives by which parallel work waits, joins, and refrains from strangling itself. Agent systems meet the same primitives in the same order of difficulty.

The barrier is the honest face of fan-in. Synthesis may not begin until every branch has reported — or until the barrier is given a policy for the branch that never will: a timeout, a quorum, a degradation rule decided in advance, because a barrier improvised at runtime becomes a hostage negotiation. Designing fan-in is designing the barrier's failure policy, and the failure policy is most of the design. Next, the deadlock: branches that wait, directly or through a chain, on each other's unfinished artifacts, in a cycle nobody drew. The defenses are the textbook's defenses, unglamorous and complete — impose a global order on resources, forbid cycles in the task graph, detect and break what slips through. A task graph that cannot be topologically sorted is not a plan; it is a future incident.

Then the subtler diseases. Priority inversion: the synthesis — the highest-value step in the system — waits on the slowest, least important branch, which holds the one artifact everyone needs. Starvation: in a pool with finite budget, the unglamorous branch (the verification, the cleanup) is perpetually preempted by new arrivals and the system's debt compounds silently. And presiding over all of it, backpressure: branches generate at machine speed while verification — by eval or by human — consumes at its own, slower speed. Every queue between them grows until something gives. Operating systems answer with bounded queues and the discipline of blocking the producer; agent systems answer with read caps, fan-out limits, and budgets that stop branches rather than queues that absorb them.

Notice what these primitives have in common: none of them make anything faster. They make parallelism survivable. The teams that discover multi-agent systems "don't work" have usually discovered, without the vocabulary, an unbounded queue or a cyclic wait. The vocabulary exists. It is sixty years old, it is in the textbooks, and it transfers whole — this chapter of the correspondence needs no adaptation, only the humility to use the old words for the new incidents.

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