// bulma/atomic_flag.go package main import ( "fmt" "sync" "sync/atomic" "time" ) func main() { var ready atomic.Bool // 就绪标志(原子布尔值) var wg sync.WaitGroup // 消费者goroutine:等待标志位变为true后执行 wg.Add(1) go func() { defer wg.Done() // 循环检测标志位,直到变为true(无锁,高效) for !ready.Load() { time.Sleep(10 * time.Millisecond) } fmt.Println("✅ 消费者检测到 ready=true,开始处理") }() // 生产者goroutine:模拟初始化操作,完成后设置标志位 time.Sleep(50 * time.Millisecond) // 模拟初始化耗时 ready.Store(true) fmt.Println("🔧 生产者设置 ready=true") wg.Wait() fmt.Println("所有操作执行完成") }