<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] ## MPG模型基本介紹 ![](https://img.kancloud.cn/f7/74/f774331e2c68a06a528c3d4fc2bb5806_1280x384.png) 1)M:操作系統的主線程(是物理線程)比較耗費資源 <br> 2)P:協程執行需要的上下文 <br> 3)G:協程 <br> <br> ### **MPG模式運行的狀態1** ![](https://img.kancloud.cn/29/20/2920d1c0069c974661069599fb45bd74_1280x666.png) 1)當前程序有三個M,如果三個M都在一個cpu運行, 就是并發,如果在不同的cpu運行就是并行 2)M1,M2,M3正 在執行一一個G,M1的協程隊列有三個,M2的協程隊列有3個,M3協程隊列有2個 3)從上圖可以看到:Go的協程是輕量級的線程,是邏輯態的,Go可以容易的起上萬個協程。 4)其它程序c/java的多 線程,往往是內核態的,比較重量級,幾千個線程可能耗光cpu ### **MPG模式運行的狀態2** 1)分成兩個部分來看 2)原來的情況是M0主線程正在執行G0協程,另外有三個協程在隊列等待 3)如果G0協程阻塞,比如讀取文件或者數據庫等 4)這時就會創建M1主線程(也可能是從已有的線程池中取出M1),并且將等待的3個協程掛到M1下開始執行,M0的 主線程下的G0仍然執行文件io的讀寫。 5)這樣的MPG調度模式,可以既讓G0執行,同時也不會讓隊列的其它協程一直阻塞,仍然可以并發/并行執行。 6)等到G0不阻塞了,M0會被放到空閑的主線程 繼續執行(從已有的線程池中取),同時G0又會被喚醒。 ![](https://img.kancloud.cn/ee/2f/ee2fcfd507cb607bf378f1b693bbebb8_1078x720.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看