- 传统多线程模型中,创建一个新的线程代价8M
- go语言中,每个并发的执行单元叫做一个`goroutine`(协程),类比轻量级的线程2Kb
// go协程
var gw sync.WaitGroup
func fn1() {
time.Sleep(time.Second * 1)
log.Println("程序暂停1s")
gw.Done()
}
func fn2() {
time.Sleep(time.Second * 2)
log.Println("程序暂停2s")
gw.Done()
}
func main() {
log.Println("主程序开始了")
begin := time.Now()
for i := 0; i < 3; i++ {
go fn1() // 开启协程
gw.Add(1)
go fn2()
gw.Add(1)
}
gw.Wait() // 等待所有子协程结束
end := time.Now()
log.Println("主程序结束了")
log.Println("程序总共用时:", end.Sub(begin))
}