真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語言線程切換 go語言線程模型

golang的線程模型——GMP模型

1、GMP模型是goalng特有的。P與M一般是一一對應(yīng)的。P(上下文)管理著一組G(goroutine)掛載在M(內(nèi)核線程)上運行,圖中左邊藍(lán)色為正在執(zhí)行狀態(tài)的goroutine,右邊為待執(zhí)行狀態(tài)的goroutiine隊列。

成都創(chuàng)新互聯(lián)公司成立于2013年,我們提供高端成都網(wǎng)站建設(shè)、成都網(wǎng)站制作成都網(wǎng)站設(shè)計、網(wǎng)站定制、全網(wǎng)整合營銷推廣、小程序制作、微信公眾號開發(fā)、成都網(wǎng)站營銷服務(wù),提供專業(yè)營銷思路、內(nèi)容策劃、視覺設(shè)計、程序開發(fā)來完成項目落地,為成都混凝土泵車企業(yè)提供源源不斷的流量和訂單咨詢。

2、我們通過 go func()來創(chuàng)建一個goroutine;有兩個存儲G的隊列,一個是局部調(diào)度器P的本地隊列、一個是全局G隊列。

3、Golang程序啟動時申請一大塊內(nèi)存并劃分成spans、bitmap、arena區(qū)域 arena區(qū)域按頁劃分成一個個小塊。span管理一個或多個頁。mcentral管理多個span供線程申請使用 mcache作為線程私有資源,資源來源于mcentral。

golang協(xié)程調(diào)度模式解密

為此Go調(diào)度器提供了工作量竊取策略,當(dāng)某個處理器P沒有需要調(diào)度的協(xié)程時,將從其他處理中偷取協(xié)程,每次偷取一半。搶占式調(diào)度,是指避免某個協(xié)程長時間執(zhí)行,而阻礙其他協(xié)程被調(diào)度的機制。

Go語言運行時,通過核心元素G,M,P 和 自己的調(diào)度器,實現(xiàn)了自己的并發(fā)線程模型。調(diào)度器通過對G,M,P的調(diào)度實現(xiàn)了兩級線程模型中操作系統(tǒng)內(nèi)核之外的調(diào)度任務(wù)。

參考:Goroutine并發(fā)調(diào)度模型深度解析&手?jǐn)]一個協(xié)程池 Golang 的 goroutine 是如何實現(xiàn)的?Golang - 調(diào)度剖析【第二部分】OS線程初始棧為2MB。Go語言中,每個goroutine采用動態(tài)擴容方式,初始2KB,按需增長,最大1G。

當(dāng)goroutine被阻塞在channel上時,當(dāng)前的goroutine就會被掛起,即處于等待模式將不會推入任何goroutines隊列中。

調(diào)度器為什么要維護(hù)多個上下文P 呢? 因為當(dāng)一個物理線程 M 被阻塞時,P 可以轉(zhuǎn)而投奔另一個OS線程 M (即 P 帶著 G 連莖拔起,去另一個 M 節(jié)點下運行)。這是 Golang調(diào)度器厲害的地方,也是高并發(fā)能力的保障。

golang多線程簡單邏輯

1、線程:多線程是為了解決CPU利用率的問題,線程則是為了減少上下文切換時的開銷,進(jìn)程和線程在Linux中沒有本質(zhì)區(qū)別,最大的不同就是進(jìn)程有自己獨立的內(nèi)存空間,而線程是共享內(nèi)存空間。

2、多個用戶線程對應(yīng)一個內(nèi)核線程,當(dāng)內(nèi)核線程對應(yīng)的一個用戶線程被阻塞掛起時候,其他用戶線程也阻塞不能執(zhí)行了。

3、Golang中也實現(xiàn)了內(nèi)存分配器,原理與tcmalloc類似,簡單的說就是維護(hù)一塊大的全局內(nèi)存,每個線程(Golang中為P)維護(hù)一塊小的私有內(nèi)存,私有內(nèi)存不足再從全局申請。

4、一般情況下M的個數(shù)會略大于P個數(shù),多出來的M將會在G產(chǎn)生系統(tǒng)調(diào)用時發(fā)揮作用。與線程池類似,Go也提供M池子。

5、調(diào)度器 由三方面實體構(gòu)成:三者對應(yīng)關(guān)系:上圖有2個 物理線程 M,每一個 M 都擁有一個上下文(P),每一個也都有一個正在運行的goroutine(G)。


網(wǎng)站欄目:go語言線程切換 go語言線程模型
標(biāo)題網(wǎng)址:http://weahome.cn/article/dchdhgc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部