【笔记】Go语言协程之间的同步

前言

Go语言通过sync.WaitGroup实现协程之间的同步

正文

  • defer waitGroup.Done()完全等同于defer waitGroup.Add(-1)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package main

import "sync"

var waitGroup sync.WaitGroup

func task() {
// 每次完成协程都将waitGroup自减1
defer waitGroup.Done()
...
}

func main() {
for i := 0; i < 3; i++ {
go task()
// 每次创建协程都将waitGroup计数器自增1
waitGroup.Add(1)
}
// 等待waitGroup中所有协程完成
waitGroup.Wait()
}

完成

参考文献

哔哩哔哩——郭宏志-老郭