Go语言入门13之runtime包案例讲解(golang time包)硬核推荐

随心笔谈9个月前更新 admin
216 00
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买

文章摘要

文章介绍了一个使用Go语言协程和等待组的示例,展示了两个协程Test01和Test02的执行流程。Test01在循环中打印信息,循环5次后结束;Test02则在等待Test01完成的基础上启动,并在i=3时退出。代码通过使用`defer`和`runtime.Gosched()`确保了协程的顺序执行和正确退出。文章重点描述了协程之间的相互等待、执行顺序以及如何通过条件控制退出。

// 定义两个函数,Test01和Test02
// Test02在Test01运行结束之后运行
// 并且Test02在i=3的时候结束运行
//Test01
func Test01(wg *sync.WaitGroup) {
defer func() {
fmt.Println(“Test01结束!”)
wg.Done()
}()
fmt.Println(“协程01循环输出:”)
for i :=0; i < 5; i++ {
fmt.Println(“协程01 -“, i)
}
}
// Test02
func Test02(wg *sync.WaitGroup) {
defer func() {
fmt.Println(“Test02结束!”)
wg.Done()
}()
// 等待Test01运行结束
runtime.Gosched()
fmt.Println(“协程02循环输出:”)
for i :=0; i < 5; i++ {
if i==3 {
fmt.Println(“i=3 退出!”)
// 当i=3时执行defer里的语句然后退出
runtime.Goexit()
}
fmt.Println(“协程02 -“, i)
}
}
// main函数调用
func main() {
var wg sync.WaitGroup
wg.Add(2)
go Test01(&wg)
go Test02(&wg)
wg.Wait()
fmt.Println(“This is main function!”)
}

© 版权声明

相关文章