Canonical guidance

Use when

Avoid

Preferred pattern

type Gate struct {
	ready atomic.Bool
}

func (g *Gate) MarkReady() {
	g.ready.Store(true)
}

func (g *Gate) Ready() bool {
	return g.ready.Load()
}

Anti-pattern

Explanation: This anti-pattern is tempting because atomics look cheaper than locks, but scattered loads and stores usually hide correctness bugs behind superficial performance intuition.

Why

Related pages

Sources