Go goroutine并发
学习goroutine · 难度:高级 · +15XP
Goroutine 并发
goroutine是Go最强大的特性——轻量级线程,创建成本极低(几KB),可以同时运行成千上万个。
基本用法
// 用go关键字启动goroutine
go func(){fmt.Println("并发执行")}()
func main(){
for i:=0;i<5;i++{
go func(n int){fmt.Println(n)}(i)
}
time.Sleep(time.Second) // 等待goroutine完成
}
goroutine vs 线程
| goroutine | OS线程 |
|---|---|
| Go运行时管理 | 操作系统管理 |
| 栈初始2KB,可增长 | 栈固定~1MB |
| 创建成本极低 | 创建成本高 |
| 成千上万个没问题 | 几十到几百个 |
???? 练习
- 创建3个goroutine并发打印数字
- 理解goroutine的并发执行顺序不确定