首頁 >後端開發 >Golang >Goroutines、用戶線程和核心線程:有什麼區別?

Goroutines、用戶線程和核心線程:有什麼區別?

Susan Sarandon
Susan Sarandon原創
2024-12-10 09:35:11213瀏覽

Goroutines, User Threads, and Kernel Threads: What's the Difference?

區分Goroutines、用戶執行緒與核心執行緒

簡介

簡介

問題1:定義作業系統執行緒與Goroutines

  • 問題:

《Eff🎜>

    《Eff🎜>介紹中提到了goroutine。 「作業系統線程」指的是什麼?是使用者執行緒還是內核線程?

答案:

「作業系統執行緒」指的是核心執行緒。

    問題2:理解Go中的P和G調度器
  • 問題:

問題:

  • 為什麼P(處理器/調度上下文)的數量等於CPU核心的數量?
如果所有 CPU 都在為 Go 程式提供服務,那麼作業系統中需要 CPU 的其他程式會發生什麼情況分配?

答案:

P 作為 goroutine 與核心執行緒之間的映射層。每個內核線程有一個 P。
  • Go 程式預設可以指派所有可用的 CPU 核心(GOMAXPROCS),但這並不妨礙其他作業系統程序的執行。即使並發操作,進程也會花費大量時間等待 I/O 操作,讓核心調度程序將 CPU 時間指派給其他程式。

問題3:核心執行緒數產生

  • 問題:
OS系統產生了多少個內核線程? 答案:號碼作業系統所建立的核心執行緒的數量是動態的,取決於系統負載。

以上是Goroutines、用戶線程和核心線程:有什麼區別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn