多執行緒程式設計之一

2022-05-13 06:41:20 字數 1050 閱讀 5582

雖然c#包含了許多創新性特徵,但其中最激動人心的一點卻是它對多執行緒程式設計的內建支援。乙個多執行緒程式包含兩個或更多能夠同時進行的部分。這種程式的每一部分稱為乙個執行緒。

1.多執行緒基礎

有兩種截然不同的多工處理:基於程序的和基於執行緒的。理解這兩者間的不同很重要。程序本質上是乙個正在執行的程式。因此,基於程序的多工處理有允許計算機同時執行兩個或多個程式的特徵。在基於程序的多工處理中,程式是排程程式能夠排程的最小**單元。

執行緒是可執行**的排程單元。在基於執行緒的多工處理環境中,所有程序都至少有乙個執行緒,而且可以更多這以為單一程式能夠一次執行兩個或多個任務。

基於程序的多工處理和基於執行緒的多工處理之間的不同可以總結如下:基於程序的多工處理處理當前執行的程式,而基於執行緒的多工處理處理同一程式中當前執行的不同程式段。

多執行緒的主要優點是它使人們能夠編寫非常有效的程式。可能大家都知道,大多數i/o裝置,不管是網路埠、磁碟驅動器,還是鍵盤,其執行速度比cpu的速度慢得多。因此,程式往往需要花費大部分執行時間來等待傳送到裝置的資訊。通過使用多執行緒,程式能夠在它空閒的時間執行另乙個任務。

執行緒可以出於幾種狀態中。他可以正在執行,或等待取得cpu時間再進行執行。正執行的執行緒可以被掛起,這是執行緒執行的一種臨時中斷,稍後可以再繼續執行它。執行緒等待資源時可能中斷。執行緒可以被終止,在此情形下,結束該執行緒的執行並且不可再繼續。

.net框架定義了兩種型別的執行緒:前台和後台。預設情況下,建立執行緒時所建立的是前台執行緒,但是我們可以把它改成後台執行緒。前台執行緒和後台執行緒之間的唯一區別:當後台執行緒的程序中的所有前台執行緒已經停止時,後台執行緒將自動終止。

隨著基於執行緒的多工處理的出現,也需要特徵的特殊型別:同步,他允許執行緒的執行以某種明確的方式相協調。c#有一道完善的子系統來進行同步操作,在此將描述它的關鍵特徵。

所有程序都至少有乙個執行執行緒,通常稱它為主執行緒,因為它是當程式啟動時要執行的執行緒。因此,主線程就是一般程式使用的執行緒。從主線程可以建立其它執行緒。

支援多執行緒程式設計的類在system.threading名字空間中定義,因此,在任何多執行緒程式的開頭都要包括下面語句:

using system.threading;

併發程式設計之多執行緒篇之一

本節主要知識點包括三個方面 一 執行緒的含義 二 程序和執行緒的區別 三 開啟程序的兩種方式 1 什麼是執行緒和多執行緒?1 在傳統作業系統中,每個程序有乙個位址空間,而且預設就有乙個控制線程。執行緒顧名思義,就是一條流水線工作的過程 流水線的工作需要電源,電源就相當於cpu 而一條流水線必須屬於乙...

多執行緒程式設計之執行緒取消

關鍵 pthread cancel函式傳送 終止訊號 pthread setcancelstate函式 設定終止方式 pthread testcancel函式取消執行緒 另一功能是 設定取消點 1 執行緒取消的定義 一般情況下,執行緒在其主體函式退出的時候會自動終止,但同時也可以因為接收到另乙個執行...

多執行緒程式設計之執行緒的封裝

前人總結出,乙個執行緒安全的class應當滿足的條件 1.從多個執行緒訪問時,其表現出正確的行為,無論作業系統如何排程這些執行緒,無論這些執行緒的執行順序如何交織。2.呼叫端 無需額外的同步或其他協調動作 在寫多執行緒程式時腦子裡要有這樣的意識,下面我總結了幾條比較具體的注意事項。使用多執行緒要考慮...