Go语言学习第三周gorouting
goroutine 是 Go语言中的轻量级线程实现,由 Go 运行时(runtime)管理。Go 程序会智能地将 goroutine 中的任务合理地分配给每个 CPU。
1:创建gorouting和调用
格式:go 函数名package main import ( "fmt" "time" ) func running() { for i := 0; i <= 10; i++ { fmt.Println("子线程", i) time.Sleep(time.Second) } } func main() { go running() fmt.Println("主线程") }
2:创建匿名函数调用:
func main() { go func() { for i := 0; i <= 10; i++ { fmt.Println("子线程", i) time.Sleep(time.Second) } }() fmt.Println("主线程") }
3:带参数的调用
func main() { go func(num int) { for i := 0; i <= 10; i++ { fmt.Println("子线程", i+num) time.Sleep(time.Second) } }(1) fmt.Println("主线程") }
4:退出 goroutine
使用return退出子函数func main() { go func(num int) { fmt.Println("子线程") func () { fmt.Println("子函数") time.Sleep(time.Second) return //退出子函数 }() }(1) fmt.Println("主线程") }
使用runtime.Goexit退出子线程func main() { go func(num int) { fmt.Println("子线程") func() { fmt.Println("子函数") for i := 0; i <= 10; i++ { fmt.Println("子线程", i) runtime.Goexit() //退出子线程 } }() }(1) fmt.Println("主线程") }