// Created on savesnippets.com · https://savesnippets.com/UebjLVutQaB7pH package main import ( "fmt" "sync" "sync/atomic" ) func main() { var counter atomic.Int64 // Go 1.19+ typed atomic var wg sync.WaitGroup for i := 0; i < 16; i++ { wg.Add(1) go func() { defer wg.Done() for j := 0; j < 100_000; j++ { counter.Add(1) } }() } wg.Wait() fmt.Println(counter.Load()) // 1600000 // Atomic compare-and-swap — useful for one-shot triggers var done atomic.Bool if done.CompareAndSwap(false, true) { fmt.Println("first to set it") } }