C 多執行緒(一) 簡介

2021-09-30 05:42:40 字數 2439 閱讀 9129

多執行緒是為了同步完成多項任務,不是為了提高執行效率,而是為了提高資源使用效率來提高系統的效率。執行緒是在同一時間需要完成多項任務的時候實現的。乙個程式開始執行時,它就是乙個程序,程序所指包括執行中的程式和程式所使用到的記憶體和系統資源。而乙個程序又是由多個執行緒所組成的,執行緒是程式中的乙個執行流,每個執行緒都有自己的專有暫存器

(棧指標、程式計數器等

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

thread

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

•start():

啟動執行緒 •

sleep(int):

靜態方法,暫停當前執行緒指定的毫秒數 •

abort():

通常使用該方法來終止乙個執行緒 •

suspend()

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

resume():

恢復被suspend()

方法掛起的執行緒的執行

•join():

表示插入執行,比如有a和

b兩個執行緒同時執行,那麼應該是沒有規則的交替式執行,也就是一會兒執行

a一會兒執行

b,如果在

b執行緒中使用執行緒

a呼叫了

join

方法,那麼

b就必須等待

a執行完畢後才能執行。例如:

static

void main(string args)

}); //

定義執行緒b

thread threadb = new

thread(delegate()

});

//啟動執行緒

threada.start();

threadb.start();

console.read(); }

首先注釋掉threada.join();這段**,執行結果如下:

threada.join()

的注釋,執行結果如下:

threadstate

在各種情況下的可能取值如下:

•aborted

:執行緒已停止 •

abortrequested

:執行緒的

thread.abort()

方法已被呼叫,但是執行緒還未停止 •

background

:執行緒在後台執行,與屬性

thread.isbackground有關

•running

:執行緒正在正常執行 •

stopped

:執行緒已經被停止 •

stoprequested

:執行緒正在被要求停止 •

suspended

:執行緒已經被掛起(此狀態下,可以通過呼叫

resume()

方法重新執行) •

suspendrequested

:執行緒正在要求被掛起,但是未來得及響應 •

unstarted

:未呼叫

thread.start()

開始執行緒的執行 •

waitsleepjoin

:執行緒因為呼叫了

wait(),sleep()

或join()

等方法處於封鎖狀態

當執行緒之間爭奪

cpu時間時,

cpu按照是執行緒的優先順序給予服務的。在

c#應用程式中,使用者可以設定

5個不同的優先順序,由高到低分別是

highest

,abovenormal

,normal

,belownormal

,lowest

,在建立執行緒時如果不指定優先順序,那麼系統預設為

threadpriority.normal

。給乙個執行緒指定優先順序,我們可以使用如下**:

//設定優先順序為最低

mythread.priority=threadpriority.lowest;

isbackground說明

當初始化乙個執行緒,把

thread.isbackground=true

的時候,指示該執行緒為後台執行緒。後台執行緒將會隨著主線程的推出而退出。後台執行緒不妨礙程式的終止,只要所有前台執行緒都終止後,

clr就會對每乙個活在的後台執行緒呼叫

abort

()來徹底終止應用程式。

當在主線程中建立了乙個執行緒,那麼該執行緒的

isbackground

預設是設定為

false

的。也就是說,當主線程推出的時候,

isbackground=false

的執行緒還會繼續執行下去,知道執行緒執行結束。只有

isbackground=true

的執行緒才會順著主線程的推出而退出。

C 多執行緒程式設計系列(一) 簡介

原文 c 多執行緒程式設計系列 一 簡介 目錄目前只整理到第二章,執行緒同步,筆者後面會慢慢更新,爭取能把這本書中精華的知識都分享出來。c 多執行緒程式設計系列 一 簡介 c 多執行緒程式設計系列 二 執行緒基礎 c 多執行緒程式設計系列 三 執行緒同步 c 多執行緒程式設計系列 四 使用執行緒池 ...

iOS 多執行緒簡介 一

比如同時開啟迅雷 xcode,系統就會分別啟動2個程序 什麼是多執行緒 多執行緒的原理 如果執行緒非常非常多,會發生什麼情況?多執行緒的優缺點 缺點 什麼是主線程 主線程的主要作用 主線程的使用注意 錯誤做法 void downloadimage 正確做法 資源共享 1塊資源可能會被多個執行緒共享,...

多執行緒 執行緒簡介

1.什麼是執行緒?什麼是程序?執行緒 thread 執行緒是作業系統所能執行排程的最小單位。他被包含在程序之中,是程序的實際運作單位,也就是程式執行流的最小單位。乙個標準的執行緒由 執行緒id pc 當前指令指標 暫存器集合 堆疊組成。也被稱為輕量級的程序。乙個執行緒可以建立和撤銷另乙個執行緒,同乙...