首頁 >後端開發 >Golang >Golang 上下文切換

Golang 上下文切換

WBOY
WBOY轉載
2024-02-06 09:10:08847瀏覽

Golang 上下文切换

問題內容

我有一個非常基本的疑問: 作業系統調度程序上下文可以在映射到核心級的用戶級執行緒之間切換嗎?

假設 goscheduler 在核心執行緒上調度了一個 goroutine A。現在 goroutine A 進行 sysblock 調用,誰先進行上下文切換:OS 還是 go 調度程式?


正確答案


Go 調度程式管理 goroutine,這些 goroutine 被重複使用到作業系統層級執行緒上。 Go 調度器可以有效率地執行 Goroutine 之間的上下文切換,例如當 Goroutine 進行阻塞系統呼叫時,而無需涉及 OS 調度器。但是,需要注意的是,由於時間分片等因素,作業系統排程器可能會獨立中斷並執行上下文切換。因此,從Go程式的角度可能無法準確地確定上下文切換的確切時機以及作業系統排程器的參與。

進一步閱讀:

golang原始碼中的proc.go

Go 調度程式:實作輕量級並發語言

#

以上是Golang 上下文切換的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除