最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

零聲golang云?生原?Go語(yǔ)言 分布式 微服務(wù) DevOps k8s二次開(kāi)發(fā)

2023-06-10 11:01 作者:一起學(xué)習(xí)fee1024  | 我要投稿

golang 的 GPM 模型

為了實(shí)現(xiàn) golang 的調(diào)度,golang 抽象出了三個(gè)結(jié)構(gòu),也就是我們常見(jiàn)的?G、P、M。

G:也就是協(xié)程 goroutine,由 Go runtime 管理。我們可以認(rèn)為它是用戶級(jí)別的線程。

goroutine 非常的輕量,初始分配只有 2KB,當(dāng)??臻g不夠用時(shí),會(huì)自動(dòng)擴(kuò)容。同時(shí),自身存儲(chǔ)了執(zhí)行 stack 信息、goroutine 狀態(tài)以及 goroutine 的任務(wù)函數(shù)等。

P:processor 處理器。P 的數(shù)量默認(rèn)跟 CPU 的核心數(shù)一樣,如果是多核的 CPU,則會(huì)有多個(gè) P 會(huì)被創(chuàng)建。

每當(dāng)有 goroutine 要?jiǎng)?chuàng)建時(shí),會(huì)被添加到 P 上的 goroutine?本地隊(duì)列上,如果 P 的本地隊(duì)列已滿,則會(huì)維護(hù)到全局隊(duì)列里。

在進(jìn)行調(diào)度時(shí),會(huì)優(yōu)先從本地隊(duì)列獲取 goroutine 來(lái)執(zhí)行。

如果本地隊(duì)列沒(méi)有,會(huì)從其他的 P 上偷取?goroutine。

如果其他 P 上也沒(méi)有,則會(huì)從全局隊(duì)列上獲取 goroutine。

這樣通過(guò)上面的策略,就能盡最大努力保證有 goroutine 可運(yùn)行

M:系統(tǒng)線程。在 M 上有調(diào)度函數(shù),它是真正的調(diào)度執(zhí)行者,M 需要跟 P 綁定,并且會(huì)讓 P 按上面的原則挑出個(gè) goroutine 來(lái)執(zhí)行。

M 雖然從 P 上挑選了 G 執(zhí)行,但 M 并不保存 G 的上下文信息,而是 G 自

己保存了相關(guān)信息,這樣有利于轉(zhuǎn)移到其他 M 上,在不同的 M 上運(yùn)行。


零聲golang云?生原?Go語(yǔ)言 分布式 微服務(wù) DevOps k8s二次開(kāi)發(fā)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
阿荣旗| 拉孜县| 承德市| 高台县| 博白县| 巴楚县| 承德市| 安康市| 彭水| 勐海县| 湟中县| 嘉义县| 广宗县| 外汇| 阿合奇县| 油尖旺区| 新营市| 葵青区| 青河县| 岢岚县| 买车| 云龙县| 始兴县| 林州市| 高淳县| 淮阳县| 临安市| 高清| 泸州市| 政和县| 鄂尔多斯市| 永州市| 淄博市| 白城市| 金昌市| 梁山县| 股票| 图们市| 武山县| 石台县| 临沧市|