前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >go中并发的生命周期

go中并发的生命周期

作者头像
贵哥的编程之路
发布2024-03-14 08:59:39
1000
发布2024-03-14 08:59:39
举报
文章被收录于专栏:用户7873631的专栏
代码语言:javascript
复制
package main
import (
"fmt"
"sync"
"time"
)
func worker(id int,wg *sync.WaitGroup){
	defer wg.Done();
	fmt.Printf("Worker %d started\n", id)
	time.Sleep(2*time.Second)
	fmt.Printf("Worker %d completed\n", id)
}
func main(){
	var wg sync.WaitGroup
		fmt.Println("Main goroutine started")
for i:=1;i<=3;i++{
	wg.Add(1)
	go worker(i,&wg)
}
wg.Wait()
fmt.Println("Main goroutine completed")
}

//wg.Wait()代表所有的协程的结束
//wg.Add(1)指定要等待的 goroutine 的数量,
//defer wg.Done();某一个协程结束任务了
//意思就是:在main函数中创建了三个work协程。然后每一个协程执行的时候休眠两秒.time.Sleep(2*time.Second)
//每一个协程结束后调用 wg.Done() 表示任务完成。
//wg.Wait()是等待所有的work协程执行完毕后,就调用。然后输出主man里面的内容
//defer wg.Done();.中defer下是因为等待这个协程执行完毕后,就结束这个协程.
//什么情况下会用到var wg sync.WaitGroup
/*
当我们需要等待多个 goroutine 执行完毕时,可以使用 sync.WaitGroup 来实现协同等待。

*/
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档