将来的你
一定会感谢现在拼命努力的自己

Go语言 WaitGroup计数信号量

Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。WaitGroup是Go语言中实现同步的一种方式。本文介绍并发控制中的WaitGroup计数信号量 ,并附上用例代码

WaitGroup是一个计数信号量,可以用来记录并维护运行的goroutine,如果WaitGroup的值大于0,Wait方法就会阻塞

调用Done方法来减少WaitGroup的值,并最终释放main函数

package main
import(
"fmt"
"runtime"
"sync"
)
func main(){
//只分配一个逻辑处理器给调度器使用
runtime.GOMAXPROCS(1)
//wg用来使main goroutine等待子goroutine结束
var wg sync.WaitGroup
//等待两个子goroutine结束
wg.Add(2)
fmt.Println("开启goroutine")
go func(){
defer wg.Done()
//循环显示三遍字母表
for count:=0;count<3;count++{
//循环显示字母表
for char:='a';char<'a'+26;char++{
fmt.Printf("%c ",char)
}
}
}()
go func(){
defer wg.Done()
//循环显示三遍字母表
for count:=0;count<3;count++{
//循环显示字母表
for char:='A';char<'A'+26;char++{
fmt.Printf("%c ",char)
}
}
}()
//main goroutine等待子goroutine结束
wg.Wait()
fmt.Println("ngoroutine结束")
}
赞(0) 打赏
声明:本站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,若涉及侵权请及时告知,将会在第一时间删除,联系邮箱:contact@3yyy.top。文章观点不代表本站立场。本站原创内容未经允许不得转载:三叶运维 » Go语言 WaitGroup计数信号量
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏