Golang sync包提供了基础的异步操作方法,包括互斥锁Mutex,执行一次Once和并发等待组WaitGroup。
本文主要介绍sync包提供的这些功能的基本使用方法。
- WaitGroup:并发等待组 。(用得最多)
- Mutex: 互斥锁 (用得最多)
- RWMutex:读写锁
- Once:执行一次
- Cond:信号量
- Pool:临时对象池
- Map:自带锁的map
sync.WaitGroup
sync.WaitGroup
- Add:初始值为0,你传入的值会往计数器上加,这里直接传入你子协程的数量
- Done:当某个子协程完成后,可调用此方法,会从计数器上减一,通常可以使用 defer 来调用。
- Wait:阻塞当前协程,直到实例里的计数器归零。
sync.WaitGroup
func main(