共用方式為


執行緒與執行緒處理

多執行緒能提升應用程式的響應速度,若應用運行於多處理器或多核心系統,則能提升吞吐量。

程序與執行緒

程序是一個正在執行的程式。 作業系統會利用程序來區分正在執行的應用程式。 執行緒是作業系統分配處理器時間的基本單位。 每個執行緒都有排程優先級,並維護系統用來在執行緒暫停時儲存執行緒上下文的一組結構。 執行緒上下文包含執行緒無縫恢復執行所需的所有資訊,包括執行緒的 CPU 暫存器集合與堆疊。 多個執行緒可以在程序的情境中執行。 程序中的所有執行緒共享其虛擬位址空間。 執行緒可以執行程式程式碼的任何部分,包括目前由另一執行緒執行的部分。

備註

.NET Framework 透過應用程式 ,提供一種在程序中隔離應用程式的方法。 (.NET Core 上不支援應用程式域。)欲了解更多資訊,請參閱應用領域文章中的應用領域與執行緒章節。

預設情況下,.NET 程式會從單一執行緒啟動,通常稱為 主要 執行緒。 然而,它可以建立額外的執行緒,以與主執行緒並行或同時執行程式碼。 這些執行緒通常稱為 工作 執行緒。

何時使用多條線程

你使用多執行緒來提升應用程式的反應速度,並利用多處理器或多核心系統來提升應用程式的吞吐量。

以桌面應用程式為例,主執行緒負責使用者介面元素並回應使用者操作。 使用工作執行緒執行耗時的操作,否則會佔用主執行緒,導致使用者介面無法回應。 你也可以用專用的線程來進行網路或裝置通訊,以更快速回應收到的訊息或事件。

如果你的程式執行可以平行執行的操作,透過在不同執行緒執行這些操作並在多處理器或多核心系統上執行,可以減少總執行時間。 在此類系統中,使用多執行緒可能同時提升吞吐量與回應速度。

如何在 .NET 中使用多執行緒

從 .NET Framework 4 開始,建議使用任務平行函式庫(TPL)平行 LINQ(PLINQ)。 欲了解更多資訊,請參見 平行程式設計

TPL 和 PLINQ 都依賴這些 ThreadPool 執行緒。 該 System.Threading.ThreadPool 類別提供一個帶有工作執行緒池的 .NET 應用程式。 你也可以使用執行緒池中的執行緒。 欲了解更多資訊,請參閱 受管理執行緒池

最後,你可以使用 System.Threading.Thread 代表受管理執行緒的類別。 更多資訊請參閱線程和多線程的使用。

多個執行緒可能需要存取共用資源。 為了保持資源未損壞狀態並避免競賽條件,你必須同步執行緒存取。 你也可以協調多條線程的互動。 .NET 提供了多種類型,可以用來同步存取共享資源或協調執行緒互動。 欲了解更多資訊,請參閱 同步原語概述

執行緒中要處理例外。 執行緒中未處理的例外通常會終止程序。 欲了解更多資訊,請參閱 受管理執行緒中的例外

另請參閱