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(