goroutine wait
This project is maintained by wangfakang
golang多协成的wait操作管理
它能够一直等到所有的goroutine执行完成,并且阻塞主线程的执行,直到所有的goroutine执行完成。
WaitGroup总共有三个方法:
package main
import (
"fmt"
"sync"
"time"
)
func main() {
var wg sync.WaitGroup
for i := 0; i < 5; i = i + 1 {
wg.Add(1)
go func(n int) {
// defer wg.Done()
defer wg.Add(-1)
mygoroutine(n)
}(i)
}
wg.Wait()
}
func mygoroutine(i int) {
time.Sleep(2*time.Second)
fmt.Println(i)
}
输出结果:
0
1
2
3
4
上面的demo就是一个在四个协成中输出数字,注意如果没有在主协成中进行wait操作饿话是看不到输出结果的, 原因就是此时main会早于协成的结束导致当前的会话关闭.
其实除了上面这种方法来进行多协成之间的同步还可以使用chanel来进行控制.
在使用中有任何问题,欢迎反馈给我,可以用以下联系方式跟我交流