WaitGroup
- WaitGroup结构体会等待一组goroutines结束
- Add方法会设置等待的goroutine的数量
- goroutine结束之后调用done即可
- WaitGroup可以用于所有线程都结束之后才执行的逻辑
- 使用之后不可以再复制
- state1为64位结构的值
- 高位的32位为计数器
- 低位的32位为等待线程数
|
|
state方法
- state方法返回计数和信号量的地址
|
|
Add方法
- Add方法添加计数的goroutine数到wg中
- 添加完计数器变为0,所有的阻塞的线程会被释放
- 添加完计数器为负数,会panic
|
|
Done方法
- Done方法完成counter–
|
|
Wait方法
- Wait方法完成线程阻塞,直到counter为0
|
|