golang sync WaitGroup
发布时间:2020-12-16 19:13:34 所属栏目:大数据 来源:网络整理
导读:WaitGroup:它能够一直等到所有的goroutine执行完成,并且阻塞主线程的执行,直到所有的goroutine执行完成。 Add(delta int),Done(),Wait() Add添加或者减少等待goroutine的数量 Done相当于Add(-1) Wait执行阻塞,直到所有的WaitGroup数量变成0 package main
WaitGroup:它能够一直等到所有的goroutine执行完成,并且阻塞主线程的执行,直到所有的goroutine执行完成。 Add(delta int),Done(),Wait()
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) hold3Seconds(n) }(i) } wg.Wait()//拖住主线程,直到waitgroup=0 } func hold3Seconds(i int) { time.Sleep(3e9) fmt.Println(i) }简单不做详细解释了,其实channel也可以实现,如果不需要子线程与主线程数据同步,这个更方便点。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |