requests arriving at once
shared gate — lined up single-file
Spot · SpotWide
message · Actor A
message · Actor B
message · Actor C
( + timer · lifecycle )
gate
single queue (waiting)
m₁
m₂
m₃
Spot
· owns the state
single execution lane ×1
▶ handle(m₀) running
one turn at a time
shared state · Spot + member Actors (no lock)
spot.state.count += 1;
// plain assignment, no lock
execution order — turns never overlap
turn · Actor A
turn · C
turn · Actor B
turn · timer
time →
the next turn starts only after the previous ends → no concurrent state access, so no lock is needed