// 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完成再结束。
©著作权归作者所有:来自51CTO博客作者ck_god的原创作品,如需转载,请注明出处,否则将追究法律责任
GoWaitGroupsyncGolang
0
分享
收藏
上一篇:goroutine/Gosche... 下一篇:Go语言中channel的基础知...
ck_god
185篇文章,9W+人气,0粉丝
学无止境,好好学习,天天向上
Ctrl+Enter 发布发布取消
推荐专栏
基于Python的DevOps实战
自动化运维开发新概念
共20章 | 抚琴煮酒
¥51.00 309人订阅
订 阅
微服务技术架构和大数据治理实战
大数据时代的微服务之路
共18章 | 纯洁微笑
¥51.00 614人订阅
订 阅
猜你喜欢
Flask中常见的数据库定义和数据库迁移OS.ENVIRON()详解Go语言11-日志系统客户端相关组件Go语言9-socket和redisGo语言8-goroutine和channelGo语言开发(十一)、Go语言常用标准库一Go语言2-基本数据类型和操作符GO-ruantime
0分享 ck_god