多執行緒能提升應用程式的響應速度,若應用運行於多處理器或多核心系統,則能提升吞吐量。
程序與執行緒
程序是一個正在執行的程式。 作業系統會利用程序來區分正在執行的應用程式。 執行緒是作業系統分配處理器時間的基本單位。 每個執行緒都有排程優先級,並維護系統用來在執行緒暫停時儲存執行緒上下文的一組結構。 執行緒上下文包含執行緒無縫恢復執行所需的所有資訊,包括執行緒的 CPU 暫存器集合與堆疊。 多個執行緒可以在程序的情境中執行。 程序中的所有執行緒共享其虛擬位址空間。 執行緒可以執行程式程式碼的任何部分,包括目前由另一執行緒執行的部分。
預設情況下,.NET 程式會從單一執行緒啟動,通常稱為 主要 執行緒。 然而,它可以建立額外的執行緒,以與主執行緒並行或同時執行程式碼。 這些執行緒通常稱為 工作 執行緒。
何時使用多條線程
你使用多執行緒來提升應用程式的反應速度,並利用多處理器或多核心系統來提升應用程式的吞吐量。
以桌面應用程式為例,主執行緒負責使用者介面元素並回應使用者操作。 使用工作執行緒執行耗時的操作,否則會佔用主執行緒,導致使用者介面無法回應。 你也可以用專用的線程來進行網路或裝置通訊,以更快速回應收到的訊息或事件。
如果你的程式執行可以平行執行的操作,透過在不同執行緒執行這些操作並在多處理器或多核心系統上執行,可以減少總執行時間。 在此類系統中,使用多執行緒可能同時提升吞吐量與回應速度。
如何在 .NET 中使用多執行緒
從 .NET Framework 4 開始,建議使用任務平行函式庫(TPL)與平行 LINQ(PLINQ)。 欲了解更多資訊,請參見 平行程式設計。
TPL 和 PLINQ 都依賴這些 ThreadPool 執行緒。 該 System.Threading.ThreadPool 類別提供一個帶有工作執行緒池的 .NET 應用程式。 你也可以使用執行緒池中的執行緒。 欲了解更多資訊,請參閱 受管理執行緒池。
最後,你可以使用 System.Threading.Thread 代表受管理執行緒的類別。 更多資訊請參閱線程和多線程的使用。
多個執行緒可能需要存取共用資源。 為了保持資源未損壞狀態並避免競賽條件,你必須同步執行緒存取。 你也可以協調多條線程的互動。 .NET 提供了多種類型,可以用來同步存取共享資源或協調執行緒互動。 欲了解更多資訊,請參閱 同步原語概述。
執行緒中要處理例外。 執行緒中未處理的例外通常會終止程序。 欲了解更多資訊,請參閱 受管理執行緒中的例外。