// bulma/atomic_counter.go package main import ( "fmt" "sync" "sync/atomic" "time" ) func main() { var atomicCounter atomic.Int64 // 原子计数器(新类型) var muCounter int64 // Mutex保护的计数器 var mu sync.Mutex // 互斥锁 // 原子操作计数 start := time.Now() var wg sync.WaitGroup for i := 0; i < 1000; i++ { wg.Add(1) go func() { defer wg.Done() for j := 0; j < 1000; j++ { atomicCounter.Add(1) } }() } wg.Wait() atomicTime := time.Since(start) // Mutex 计数(对比) start = time.Now() for i := 0; i < 1000; i++ { wg.Add(1) go func() { defer wg.Done() for j := 0; j < 1000; j++ { mu.Lock() muCounter++ mu.Unlock() } }() } wg.Wait() mutexTime := time.Since(start) fmt.Printf("✅ 原子计数: %d (耗时: %v)\n", atomicCounter.Load(), atomicTime) fmt.Printf("✅ Mutex计数: %d (耗时: %v)\n", muCounter, mutexTime) fmt.Printf("🚀 性能提升: %.1fx\n", float64(mutexTime)/float64(atomicTime)) }