<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國際加速解決方案。 廣告
                ### 9.3.3 多線程編程的應用 線程原本是操作系統中的概念,是操作系統用于實現系統功能的工具。現在線程已演變成為用戶程序可使用的工具,廣泛用于應用程序設計。 多線程技術主要用于需要并發執行的場合。例如在很多游戲程序中,都需要維持一個動畫場景,而玩家可以通過鼠標或鍵盤來輸入操作指令,控制游戲的進行。假如程序只有一個 控制流,則當程序執行到等待用戶輸入指令的時候,由于用戶輸入較慢(相對 CPU 速度來 說),程序無法向前繼續執行語句,因而無法更新動畫畫面,效果上動畫就停頓了。如果將 等待用戶輸入的任務和維持動畫的任務用兩個線程來獨立實現,則可解決這個問題。 上述例子其實具有一般性。如果在一個長時間計算任務(維持動畫)期間需要對輸入輸 出事件(鼠標或鍵盤指令)做出反應,單線程程序是不行的,因為程序會阻塞在長時間計算 任務上,沒有機會來檢查輸入輸出。而如果用一個線程來執行這個長時間計算任務,并讓另 一個線程監控輸入輸出事件,兩個線程的并發執行就可以使應用程序在執行計算任務的同時 能對用戶輸入作出反應。如圖 9.2 所示。 ![](https://box.kancloud.cn/2016-02-22_56cafce6dee20.png) 圖 9.2 多線程的應用 此外,在科學計算中,很多數值算法都可以并行化,如矩陣的并行計算、線性方程組的 并行求解、偏微分方程的并行求解和快速傅里葉變換的并行算法等等。這時可以為每個處理 器建立一個線程,從而高效地進行計算。 雖然多線程技術有很多用途,但掌握多線程編程有點難度,即使對職業程序員也是如此。 例如,多線程技術涉及所謂競態條件(race condition),即因為未曾預料到的、對事件之間 相對時序的嚴重依賴而導致的異常行為。具體例子如:兩個客戶同時登錄訂票網站,都看到 某航班還剩一個座位,于是都下單預定該座位,最終必然會因為誰先來后到而引起糾紛。如 果兩人是在售票點排隊購票(串行執行)就沒有這個問題。因此,多線程程序與串行程序是 不同的,需要分析并協調各線程間的復雜的執行時序,這導致編程和調試都很困難。 多線程程序中,由于各線程是相互獨立的,它們的并發執行沒有確定次序可言,因此線 程是一種非確定性的計算模型,同一個程序的多次執行未必導致同樣的結果。所以,多線程 計算模型不具有串行計算模型的可理解性、可預測性和確定性性質,使用時要非常小心。
                  <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>

                              哎呀哎呀视频在线观看