sync包:Mutex、RWMutex、WaitGroup

📅 2026/8/25 12:44:28
sync包:Mutex、RWMutex、WaitGroup
TL;DR 核心要点速览无缓冲channel发送和接收必须同步,否则死锁有缓冲channel缓冲区未满时发送不阻塞goroutine初始栈2KB,比线程轻100倍GMP调度器P数量默认等于CPU核数sync.Mutex保护共享状态,channel用于通信本篇是Go并发编程模块,含实战代码摘要:sync包精讲,Mutex互斥锁、RWMutex读写锁、WaitGroup等待组、竞态条件和锁的选择sync包:Mutex、RWMutex、WaitGroup摘要Go sync包详解,包括Mutex互斥锁使用与自旋机制、RWMutex读写锁适用场景、WaitGroup并发等待、sync.Once单例初始化、sync.Map并发安全映射、锁拷贝导致的死锁问题排查。前两篇讲了channel和select,有人可能觉得Go并发就靠channel就行了。我一开始也这么想,直到写了一个计数器,多个goroutine同时递增一个数字。我用了channel来做,结果代码写了三十行,又复杂又慢