山高月小,水落石出。

Goroutine sync.Mutex 互斥锁详解

Go 语言 sync.Mutex 互斥锁详解 sync.Mutex 是 Go 标准库 sync 包提供的互斥锁,用来保护共享资源,防止多个 goroutine 同时读写导致数据竞争。 一、为什么需要互斥锁? 先看一个没有锁的经典问题: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 package main import ( "fmt" "sync" ) func main() { counter := 0 var wg sync.WaitGroup for i := 0; i < 1000; i++ { wg.Add(1) go func() { defer wg.Done() counter++ // ⚠️ 数据竞争 }() } wg.Wait() fmt.Println("counter =", counter) } 多次运行,输出经常小于 1000,比如 987、993、1000 不固定。原因: ...

October 13, 2026 · 5 min · zwdart