Goroutine Lock
Go 中与 Goroutine 相关的锁与同步机制详解 从**“goroutine 视角”**系统梳理 Go 提供的锁/同步原语,每个都配可运行示例,并说清楚它们和 GMP 调度器的交互。 一、总览:Go 有哪些锁与同步原语 原语 包 一句话定位 阻塞时 goroutine 状态 Mutex sync 互斥锁,最基础 _Gwaiting,让出 P RWMutex sync 读写分离,读并发 同上 Cond sync 条件变量,配合 Mutex 等待条件 _Gwaiting Once sync 只执行一次 首次执行时其他 G 等待 WaitGroup sync 等一组 goroutine 完成 _Gwaiting Map sync 并发安全 map(读优化) 内部用锁/原子 atomic sync/atomic 无锁原子操作 不阻塞,CPU 原语 channel 内置 通信 + 同步 _Gwaiting 核心认知:除 atomic 外,所有锁原语在竞争时都会让当前 goroutine 进入 _Gwaiting,让出 P,M 去跑别的 G。阻塞在锁上的 goroutine 不占线程——这是 Go 能开几十万 goroutine 的共同基础。 ...