首頁  >  文章  >  後端開發  >  golang如何實現高並發?

golang如何實現高並發?

coldplay.xixi
coldplay.xixi原創
2020-07-18 16:05:287249瀏覽

golang實現高並發的方法:首先M關聯了一個內核線程,並透過調度器P的調度,接1個或多個G;然後由M和P的一對一關係,透過P調度N個G;最後實作核心執行緒和G的多對多關係【M:N】。

golang如何實現高並發?

golang實作高並發的方法:

go語言使用MPG模式來實作CSP

影片課程推薦→:《千萬級資料並發解決方案(理論實戰)》

在傳統的並發中起很多執行緒只會加大CPU和記憶體的開銷,太多的執行緒會大量的消耗電腦硬體資源,造成並發量的瓶頸。

  • M指的是Machine,一個M直接關聯了一個核心執行緒。

  • P指的是”processor”,代表了M所需的上下文環境,也是處理使用者層級程式碼邏輯的處理器。

  • G指的是Goroutine,其實本質上也是一種輕量級的執行緒。

golang如何實現高並發?

我個人的理解:M關聯了一個核心線程,透過調度器P(上下文)的調度,可以連接1個或多個G,相當於把一個核心線程切割成了N個用戶線程,M和P是一對一關係(但實際調度中關係多變),透過P調度N個G(P和G是一對多關係),實作核心執行緒和G的多對多關係(M:N),透過這個方式,一個核心執行緒就可以起N個Goroutine,同樣硬體配置的機器可用的使用者執行緒就成幾何級成長,並發性大幅提高。

相關學習推薦:Go語言教學

以上是golang如何實現高並發?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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