goroutine
尚硅谷Golang課
goroutine
進程=程序在操作系統中的一次進行過程
線程=執行實例的最小單位
- 一個進程可以創建多個線程且併發執行
- 一個程序至少包含一個進程,一個進程至少包含一個線程
- 併發=多線程程序在單核上運行
- 併行=多線程程序在多核上運行
GO的主線程(可以理解為進程),一個GO進程上可以起很多協程,協程可以理解為輕量級的線程,協程特點:
- 有獨立的棧空間
- 共享程序堆空間
- 調度由用戶控制
- 為輕量級的線程
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
此篇文章的評論功能已經停用。