<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>

                # 進程、線程、協程的區別 ### 關系 ![](https://img.kancloud.cn/bc/b1/bcb155964abee12726c52719877382af_754x645.png) <center>圖:1.5-1</center> 為了更簡單的理解它們之間的關系,我們依然舉個“栗子”幫助大家理解進程、線程、協程。 原型|比喻 -|-| CPU|工廠 進程|車間 線程|生產線 協程|工人 一個工廠里面會有多個車間,每個車間有自己獨立的物料、電力供應,這就好比是進程,有自己的獨立內存地址和數據棧,開一個車間的成本非常高,我們需要有足夠的大小的廠房。在工廠物料和電力都有限的情況下,一個車間開工其他車間就要停下來,這就類似上下文切換,所以這個切換是很浪費時間的。 一個車間場地允許的話可以直接多開幾條生產線,這樣成本就會比開一間車間要低得多,當我們一條生產線不夠用的時候可以多開幾條生產線,就好比我們在程序開線程一樣防止一條生產線中工作不過來堵在那里。 生產線上的每一個工人都在協助完成一個產品的生成組裝,前一個人把一個零件處理好了,然后交由下一個人進行處理。如果有一個人處理不過來,很多零件都堆積在某一個人那的時候,流水線后面的工人等不到上一個零件過來就沒有辦法繼續返貨,比如我們遇到了IO阻塞;當然狠心的老板不會讓后面的工人閑下來,老板就讓后面的工人去做別的事情,反正就是不讓你偷懶。 ### 上下文切換對比 - |進程|線程|協程 -|-|-|-| 切換者|操作系統|操作系統|開發者 切換時機|操作系統策略|操作系統策略|開發者程序指定 上下文|頁全局目錄、內核棧、硬件上下文|內核棧、硬件上下文|硬件上下文 切換內容保存|內存棧|內存棧|保存到用戶的變量(用戶棧或者用戶堆) 切換過程|用戶態->內核態->用戶態|用戶態->內核態->用戶態|純用戶態 切換效率|低|中|高 切換開銷|高|中|低
                  <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>

                              哎呀哎呀视频在线观看