調(diào)度

調(diào)度模型

groutine能擁有強大的并發(fā)實現(xiàn)是通過GPM調(diào)度模型實現(xiàn)

  1. G代表一個goroutine對象贺归,每次go調(diào)用的時候这溅,都會創(chuàng)建一個G對象
    
  2. M代表一個線程彭羹,每次創(chuàng)建一個M的時候奕筐,都會有一個底層線程創(chuàng)建;所有的G任務(wù)徘钥,最終還是在M上執(zhí)行
    
  3. P代表一個處理器衔蹲,每一個運行的M都必須綁定一個P,就像線程必須在么一個CPU核上執(zhí)行一樣
    

每一個P保存著本地G任務(wù)隊列吏饿,也有一個全局G任務(wù)隊列踪危。

調(diào)用go時

  1. 創(chuàng)建一個G對象,加入到本地隊列或者全局隊列
    
  2. 如果還有空閑的P猪落,則創(chuàng)建一個M,如果沒找到則直接返回
    
  3. M會啟動一個底層線程畴博,循環(huán)執(zhí)行能找到的G任務(wù)
    
  4. G任務(wù)的執(zhí)行順序是笨忌,先從本地隊列找,本地沒有則從全局隊列找(一次性轉(zhuǎn)移(全局G個數(shù)/P個數(shù))個俱病,再去其它P中找(一次性轉(zhuǎn)移一半)官疲,
    
  5. 以上的G任務(wù)執(zhí)行是按照隊列順序(也就是go調(diào)用的順序)執(zhí)行的。
    

搶占式調(diào)度

啟動的時候亮隙,會專門創(chuàng)建一個線程sysmon途凫,用來監(jiān)控和管理

  1. 記錄所有P的G任務(wù)計數(shù)schedtick,(schedtick會在每執(zhí)行一個G任務(wù)后遞增)
    
  2. 如果檢查到 schedtick一直沒有遞增溢吻,說明這個P一直在執(zhí)行同一個G任務(wù)维费,如果超過一定的時間(10ms),就在這個G任務(wù)的棧信息里面加一個標記(stackguard設(shè)置為StackPreempt然后相當于調(diào)用runtime.Gosched)
    
  3. 然后這個G任務(wù)在執(zhí)行的時候促王,如果遇到非內(nèi)聯(lián)函數(shù)調(diào)用犀盟,就會檢查一次這個標記,然后中斷自己蝇狼,把自己加到隊列末尾阅畴,執(zhí)行下一個G
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市迅耘,隨后出現(xiàn)的幾起案子贱枣,更是在濱河造成了極大的恐慌监署,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纽哥,死亡現(xiàn)場離奇詭異焦匈,居然都是意外死亡,警方通過查閱死者的電腦和手機昵仅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門缓熟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人摔笤,你說我怎么就攤上這事够滑。” “怎么了吕世?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵彰触,是天一觀的道長。 經(jīng)常有香客問我命辖,道長况毅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任尔艇,我火速辦了婚禮尔许,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘终娃。我一直安慰自己味廊,他們只是感情好,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布棠耕。 她就那樣靜靜地躺著余佛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪窍荧。 梳的紋絲不亂的頭發(fā)上辉巡,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機與錄音蕊退,去河邊找鬼郊楣。 笑死,一個胖子當著我的面吹牛咕痛,可吹牛的內(nèi)容都是我干的痢甘。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼茉贡,長吁一口氣:“原來是場噩夢啊……” “哼塞栅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤放椰,失蹤者是張志新(化名)和其女友劉穎作烟,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體砾医,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡拿撩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了如蚜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片压恒。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖错邦,靈堂內(nèi)的尸體忽然破棺而出探赫,到底是詐尸還是另有隱情,我是刑警寧澤撬呢,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布伦吠,位于F島的核電站,受9級特大地震影響魂拦,放射性物質(zhì)發(fā)生泄漏毛仪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一芯勘、第九天 我趴在偏房一處隱蔽的房頂上張望箱靴。 院中可真熱鬧,春花似錦借尿、人聲如沸刨晴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至茄靠,卻和暖如春茂契,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背慨绳。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工掉冶, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人脐雪。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓厌小,卻偏偏與公主長得像,于是被迫代替她去往敵國和親战秋。 傳聞我的和親對象是個殘疾皇子璧亚,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容