- 目錄 -
goroutine
尚硅谷Golang課

goroutine

進程=程序在操作系統中的一次進行過程

線程=執行實例的最小單位

  • 一個進程可以創建多個線程且併發執行
  • 一個程序至少包含一個進程,一個進程至少包含一個線程
  • 併發=多線程程序在單核上運行
  • 併行=多線程程序在多核上運行

GO的主線程(可以理解為進程),一個GO進程上可以起很多協程,協程可以理解為輕量級的線程,協程特點:

  1. 有獨立的棧空間
  2. 共享程序堆空間
  3. 調度由用戶控制
  4. 為輕量級的線程
func test() {
	for i := 0; i < 10; i++ {
		fmt.Println("test()Hello,world" + strconv.Itoa(i))
		time.Sleep(time.Second / 10)
	}
}

func main() {
	go test() //開啟一個協程
	//如果主線程退出了,即使協程還沒執行完,也會退出
	//協程可以自己先結束
	for i := 0; i < 10; i++ {
		fmt.Println("main()Hello,go" + strconv.Itoa(i))
		time.Sleep(time.Second / 10)
	}
	go test() //開啟一個協程,主線程退出了,即使協程還沒執行完,也會退出

	//查邏輯CPU數量
	cpuNum := runtime.NumCPU()
	fmt.Println(cpuNum)
	//設置最大線程數量
	runtime.GOMAXPROCS(cpuNum)

}

上次修改於 2021-08-01

此篇文章的評論功能已經停用。