码迷,mamicode.com
首页 > 编程语言 > 详细

Go语言sync库和WaitGroup的使用

时间:2018-10-07 21:33:32      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:完成后   信号量   package   code   printf   就会   group   调用   hello   

// code_041_sync_WaitGroup project main.go package main import ( "fmt" "sync" ) func main() { fmt.Println("Hello World!") var wg sync.WaitGroup wg.Add(2) go func() { defer wg.Done() for i := 0; i < 10000; i++ { fmt.Printf("Hello,Go.This is %d\n", i) } }() go func() { defer wg.Done() for i := 0; i < 10000; i++ { fmt.Printf("Hello, world.This is %d\n", i) } }() wg.Wait() }

sync.WaitGroup是一个计数的信号量,使main函数所在主线程等待两个goroutine执行完成后再结束,否则两个goroutine还在运行时,主线程已经结束。
sync.WaitGroup使用非常简单,使用Add方法设设置计数器为2,每一个goroutine的函数执行完后,调用Done方法减1。Wait方法表示如果计数器大于0,就会阻塞,main函数会一直等待2个goroutine完成再结束。

Go语言sync库和WaitGroup的使用

标签:完成后   信号量   package   code   printf   就会   group   调用   hello   

原文地址:http://blog.51cto.com/13914991/2294294

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!