Under construction. The races run, but this is still a work in progress. Betting is not wired up yet, and two of the four hazards are announced without changing anything. Nothing here is finished.
The race
Loading the field…
About 2.8MB. One race takes roughly ten seconds.
Each race is decided by the Go scheduler, so the same field gives a different result every time.
What you are watching
Six cats race a furlong. Every cat is a goroutine, and the winner is decided entirely by the Go runtime scheduler. The odds are fabricated, because nobody, including the game, has any idea who is going to win.
| Cat | Price | What it actually is |
|---|---|---|
| Mr. Fluffington | 5/2 | Calls runtime.Gosched every iteration, yielding to anyone who wants the processor. Has never won a race. |
| Biscuits | 3/1 | Sleeps 5 to 120ms at random. She has found something. It is a dust mote. |
| Duchess | 7/2 | Holds a mutex for 30 to 80ms while sitting in the path of the field. Everyone behind her blocks. |
| Noodle | 9/2 | Panics on about 2% of strides, is recovered, and resumes ten paces back with no memory of it. |
| Sir Reginald Boxworth III | 40/1 | A sync.Once gates one perfect burst. Afterwards every stride returns zero, permanently. His goroutine does not exit. |
| Mittens | 6/1 | Driven by a period coprime with the race tick, so her sprints line up with nothing. |
The hazards
- Simultaneous Nap. The field freezes. Backed by
runtime.GC, which genuinely stops the world. - The Zoomies.
GOMAXPROCSdoubles for three seconds, then is restored. - Cardboard Box. A lane backs up against a bounded channel. The backpressure is the feature.
- Stewards' Enquiry. Purely theatrical. No technical purpose. Kept anyway.
One note on how this runs
WebAssembly runs at GOMAXPROCS=1, so the cats interleave
cooperatively rather than in parallel. The order they get scheduled in is
still not something anyone controls, which is why the same six cats give a
different result every race.
