1. 程式人生 > >.NET多執行緒技術詳解(1)

.NET多執行緒技術詳解(1)

預設情況下,C# 程式具有一個執行緒。此執行緒執行程式中以Main方法開始和結束的程式碼。Main直接或間接執行的每一個命令都由預設執行緒(或主執行緒)執行,當Main返回時此執行緒也將終止。不過,可以建立輔助執行緒,以便與主執行緒一起並行執行程式碼。這些執行緒通常稱為“輔助執行緒”。

多執行緒的優點:

無論如何,要提高對使用者的響應速度並且處理所需資料以便幾乎同時完成工作,使用多個執行緒是一種最為強大的技術。在具有一個處理器的計算機上,多個執行緒可以通過利用使用者事件之間很小的時間段在後臺處理資料來達到這種效果。例如,在另一個執行緒正在重新計算同一應用程式中的電子表格的其他部分時,使用者可以編輯該電子表格。

無需修改,同一個應用程式在具有多個處理器的計算機上執行時將極大地滿足使用者的需要。單個應用程式域可以使用多個執行緒來完成以下任務:

·通過網路與 Web 伺服器和資料庫進行通訊。

·執行佔用大量時間的操作。

·區分具有不同優先順序的任務。例如,高優先順序執行緒管理時間關鍵的任務,低優先順序執行緒執行其他任務。

·使使用者介面可以在將時間分配給後臺任務時仍能快速做出響應。

多執行緒的缺點:

建議您使用盡可能少的執行緒,這樣可以最大限度地減少作業系統資源的使用,並可提高效能。執行緒處理還具有在設計應用程式時要考慮的資源要求和潛在衝突。這些資源要求如下所述:

·系統將為程序、AppDomain

物件和執行緒所需的上下文資訊使用記憶體。因此,可以建立的程序、AppDomain 物件和執行緒的數目會受到可用記憶體的限制。

·跟蹤大量的執行緒將佔用大量的處理器時間。如果執行緒過多,則其中大多數執行緒都不會產生明顯的進度。如果大多數當前執行緒處於一個程序中,則其他程序中的執行緒的排程頻率就會很低。

·使用許多執行緒控制程式碼執行非常複雜,並可能產生許多 bug

·銷燬執行緒需要了解可能發生的問題並對那些問題進行處理。

多執行緒的優點是顯而易見的,但是也不是說用到多執行緒就一定能提高系統性能,我們在設計多執行緒應用時要認真考慮,做到揚長避短。那麼就讓我們開始.NET的多執行緒應用之旅。