協程Coroutine
特點
- 輕量級的“執行緒”
- 非搶占式多任務處理,由協程主動交出控制權
- 編譯器/解釋器/虛擬機層面的多任務,非作業系統
- 多個協程可以在一個或多個執行緒上執行
go關鍵字開啟一個協程
func main() {
for i := 0; i < 10; i++ {
go func(i int) {
for {
fmt.Println(i)
}
}(i)
}
time.Sleep(time.Millisecond)
}
goroutine可能的切換點(轉讓控制權)
- I/O,select
- channel
- 等待鎖
- 函式呼叫(有時)
- routime.Goshed()
- 只是參考,不能保證切換,不能保證在其他地方不切換
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/40870.html
標籤:Go
