C 多執行緒程式設計技術基礎知識入門

2022-09-26 02:30:15 字數 1854 閱讀 3514

什麼是程序?

當乙個程式開始執行時,它就是乙個程序,程序包括執行中的程式和程式所使用到的記憶體和系統資源。而乙個程序又是由多個執行緒所組成的。

什麼是執行緒?

執行緒是程式中的乙個執行流,每個執行緒都有自己的專有暫存器(棧指標、程式計數器等),但**區是共享的,即不同的執行緒可以執行同樣的函式。

什麼是多執行緒?

多執行緒是指程式中包含多個執行流,即在乙個程式中可以同時執行多個不同的執行緒來執行不同的任務,也就是說允許單個程式創www.cppcns.com建多個並行執行的執行緒來完成各自的任務。

多執行緒是指程式中包含多個執行流,即在乙個程式中可以同時執行多個不同的執行緒來執行不同的任務,也就是說允許單個程式建立多個並行執行的執行緒來完成各自的任務。

我們以前學習過的統籌方法,實際上就是一種多執行緒的應用。一件事,我們可以分成幾個幾部分來做,可以並行來完成,節省時間。當然這個和計算機實現的多執行緒是有許多不同的。瀏覽器就是乙個多執行緒程式,可以邊**,邊聽歌,邊瀏覽網頁。

多執行緒可以提高cpu的利用率,但是使用不當也會帶來問題,主要是記憶體開銷和管理複雜。另外需要特別指出,在單核cpu的情況下,同一時間只能執行乙個執行緒,是偽多執行緒,而在多核cpu上,多執行緒才可以真正的在多個processor同時執行。

多執行緒的好處:

可以提高cpu的利用率。在多執行緒程式中,乙個執行緒必須等待的時候,cpu可以執行其它的執行緒而不是等待,這樣就大大提高了程式的效率。

多執行緒的不利方面:

執行緒也是程式,所以執行緒需要占用記憶體,執行緒越多占用記憶體也越多; 多執行緒需要協調和管理,所以需要cpu時間跟蹤執行緒; 執行緒之間對共享資源的訪問會相互影響,必須解決競用共享資源的問題;執行緒太多會導致控制太複雜,最終可能造成很多bug;

接下來將對c#程式設計中的多執行緒機制進行**。為了省去建立gui那些繁瑣的步驟,更清晰地逼近執行緒的本質,接下來的所有程式都是控制台程式,程式最後的console.readline()是為了使程式中途停下來,以便看清楚執行過程中的輸出。

任何程式在執行程式設計客棧時,至少有乙個主線程。

乙個直觀印象的執行緒示例:

using system;

using system.threading;

namespace threadtest

}}輸出如下:

system thread's status:running

在這裡,我們通過thread類的靜態屬性currentth程式設計客棧read獲取了當前執行的執行緒,對其name屬性賦值「system thread」,最後還輸出了它的當前狀態(threadstate)。

所謂靜態屬性,就是這個類所有物件所公有的屬性,不管你建立了多少個這個類的例項,但是類的靜態屬性在記憶體中只有乙個。很容易理解currentthread為什麼是靜態的——雖然有多個執行緒同時存在,但是在某乙個時刻,cpu只能執行其中乙個。

在程式的頭部,我們使用了如pizkv下命名空間:

using system;

using system.threading;

在.net framework class library中,所有與多執行緒機制應用相關的類都是放在system.threading命名空間中的。如果你想在你的應用程式中使用多執行緒,就必須包含這個類。

我們通過其中提供的thread類來建立和控制線程,threadpool類用於管理執行緒池等。(此外還提供解決了執行緒執行安排,死鎖,執行緒間通訊等實際問題的機制。)

thread類有幾個至關重要的方法,描述如下:

start():啟動執行緒;

sleep(int):靜態方法,暫停當前執行緒指定的毫秒數;

abort():通常使用該方法來終止乙個執行緒;

suspend():該方法並不終止未完成的執行緒,它僅僅掛起執行緒,以後還可恢復;

resume():恢復被suspend()方法掛起的執行緒的執行。

c 基礎知識 多執行緒

執行緒被定義為程式的執行路徑。每個執行緒都定義了乙個獨特的控制流。如果您的應用程式涉及到複雜的和耗時的操作,那麼設定不同的執行緒執行路徑往往是有益的,每個執行緒執行特定的工作。執行緒是輕量級程序。乙個使用執行緒的常見例項是現代作業系統中並行程式設計的實現。使用執行緒節省了 cpu 週期的浪費,同時提...

漫談C Builder多執行緒程式設計技術

在很多情況下,可能需要為程式建立執行緒。這裡給出其中一些可能性 1 如果建立的是乙個多文件介面 multiple document inte ce,mdi 程式,那麼為每個視窗分配乙個執行緒就顯得十分重要了,例如,對於乙個通過多個modem同時連線到多個主機的mdi通訊程式而言,如果每個視窗都有它自...

多執行緒基礎知識

建立乙個序列佇列,該佇列中從方的都是要依次執行的任務,dispatch queue serial 表示序列佇列的標示 dispatch queue t serialqueue dispatch queue create serial dispatch queue serial 建立乙個並行佇列,並行...