區分Goroutines、用戶執行緒與核心執行緒
簡介
簡介
問題1:定義作業系統執行緒與Goroutines
《Eff🎜>
《Eff🎜>介紹中提到了goroutine。 「作業系統線程」指的是什麼?是使用者執行緒還是內核線程? -
答案:
「作業系統執行緒」指的是核心執行緒。
問題:
-
- 為什麼P(處理器/調度上下文)的數量等於CPU核心的數量?
如果所有 CPU 都在為 Go 程式提供服務,那麼作業系統中需要 CPU 的其他程式會發生什麼情況分配?
答案:
P 作為 goroutine 與核心執行緒之間的映射層。每個內核線程有一個 P。
- Go 程式預設可以指派所有可用的 CPU 核心(GOMAXPROCS),但這並不妨礙其他作業系統程序的執行。即使並發操作,進程也會花費大量時間等待 I/O 操作,讓核心調度程序將 CPU 時間指派給其他程式。
問題3:核心執行緒數產生
OS系統產生了多少個內核線程? 答案:號碼作業系統所建立的核心執行緒的數量是動態的,取決於系統負載。
以上是Goroutines、用戶線程和核心線程:有什麼區別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!