首页 > IT职业 > IT图书 > Golang中超简单的协程同步工具
现在有如下需求:多协程处理一批数据,但需要所有协程都跑完才可以继续下一步,这个需求在日常的处理数据中非常常见。多协程可以最大限度的压榨CPU和IO,但从业务角度来看,又需要保持一致性,这个时候我们就需要协程同步技术。
从下图可以看到在3个协程运行的时间都不可控,但为了达到同步的目的,需要等待3个携程全部跑完再继续下面的流程。

image
Golang提供了使用非常方便的包sync.waitgroup ,这个包就提供了3个方法,
Add(delta int) 添加携程记录
Done() 移除携程记录
Wait() 同步等待所有记录的携程全部结束
package main
import ( "fmt"
"sync"
"time")
var wg sync.WaitGroup
func main() { for i := 0; i 输出:
2
1
0
All done !
作者:freelang
链接:https://www.jianshu.com/p/0c72863dfc00
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3156/viewspace-2805417/ ,如需转载,请注明出处,否则将追究法律责任。