共用方式為


使用多工處理時機

實作多工的方式有兩種:做為具有多個執行緒的單一進程,或多個進程,每個進程都有一或多個執行緒。 應用程式可以將需要私人位址空間和私人資源的每個執行緒放入自己的進程,以保護它免于其他進程執行緒的活動。

多執行緒進程可以管理與執行緒互斥的工作,例如提供使用者介面和執行背景計算。 建立多執行緒進程也可以方便建構同時執行數個類似或相同工作的程式。 例如,具名管道伺服器可以為每個附加至管道的用戶端進程建立執行緒。 此執行緒會管理伺服器與用戶端之間的通訊。 您的進程可以使用多個執行緒來完成下列工作:

  • 管理多個視窗的輸入。
  • 管理來自數個通訊裝置的輸入。
  • 區分不同優先順序的工作。 例如,高優先順序執行緒會應付緊急工作,而低優先順序執行緒則執行其他工作。
  • 讓使用者介面保持回應,同時又配置時間給背景工作。

應用程式通常會藉由建立單一多執行緒進程而非建立多個進程,以更有效率的方式實作多工,原因如下:

  • 系統可以比進程更快速地對執行緒執行內容切換,因為進程比執行緒更多的額外負荷, (進程內容大於執行緒內容) 。
  • 進程的所有線程都會共用相同的位址空間,並可存取進程的全域變數,以簡化執行緒之間的通訊。
  • 進程的所有線程都可以共用資源的開啟控制碼,例如檔案和管道。

您可以使用其他技術來取代多執行緒。 其中最重要的專案如下:非同步輸入和輸出 (I/O) 、I/O 完成埠、 (APC) 非同步程序呼叫,以及等候多個事件的能力。

單一線程可以起始多個耗時的 I/O 要求,這些要求可以使用非同步 I/O 同時執行。 非同步 I/O 可以在檔案、管道和序列通訊裝置上執行。 如需詳細資訊,請參閱 同步處理和重迭的輸入和輸出

單一線程可以在等候任何一個或所有事件發生時封鎖自己的執行。 這比使用多個執行緒更有效率,每個執行緒都等候單一事件,而且比使用持續檢查要發生的事件來耗用處理器時間的單一線程更有效率。 如需詳細資訊,請參閱 Wait Functions