Go 协程(goroutine)

  • 传统多线程模型中,创建一个新的线程代价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))
}

おすすめ

転載: blog.csdn.net/weixin_40123451/article/details/120779655