執行緒的使用

2022-09-17 16:48:20 字數 2867 閱讀 3358

單執行緒

單執行緒,就是只有乙個執行緒。系統為應用程式分配乙個主線程,該執行緒執行程式中以main方法開始和結束的**。

多執行緒

1.多執行緒的優點:要提高對使用者的響應速度並且處理所需資料,以便幾乎同時完成工作。

單個應用程式域可以使用多執行緒完成以下任務:

1).通過網路與web伺服器和資料庫進行通訊。

2).執行占用大量時間操作。

3).區分具有不同優先順序的任務。

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

2.多執行緒的缺點

增加作業系統資源的使用,降低效能。

使用多執行緒,可能會產生如下問題:

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

3).使用許多執行緒控制**執行非常複雜,並且可能產生許多bug。

4).銷毀執行緒需要了解可能發生的問題並對這些問題進行處理。

3.thread類

thread類主要用於建立並控制線程、設定執行緒優先順序並獲取其狀態。

1).thread類的常用屬性及說明

apartmentstate:獲取或設定該執行緒的單元狀態

currentcontext:獲取執行緒正在其中執行的當前上下文

currentthread:獲取當前正在執行的執行緒

isalive:獲取當前執行緒的執行狀態

managedthreadid:獲取當前託管執行緒的唯一識別符號

name:獲取或設定執行緒的名稱

priority:獲取執行緒的排程優先順序

threadstate:獲取當前執行緒的狀態

2).thread類的常用方法及說明

abort:終止執行緒

getapartmentstate:返回乙個apartmentstate值,指示單元狀態。

getdomain:返回當前執行緒正在其中執行的當前域

interrupt:中斷處於waitsleepjoin執行緒狀態的執行緒

join:阻止呼叫執行緒,直到某個執行緒終止時為止

resetabort:取消為當前執行緒請求的abort

resume:繼續已掛起的執行緒

sleep:將當前執行緒阻止指定的毫秒數

spinwait:導致執行緒等待由iterations引數定義的時間量

start:使執行緒被安排進行執行

suspent:掛起執行緒,或者如果執行緒已掛起,則不起作用

volatileread:讀取字段值。

volatilewrite:立即向字段寫入乙個值。

3).建立執行緒

static void main(string args)

public static void createthread()

4).執行緒的掛起與恢復

static void main(string args)

public static void createthread()

5).執行緒休眠

將當前執行緒阻止指定的時間。

a).public static void sleep(int millsecondstimeout)

b).public static void sleep(timespan timeout)

6).終止執行緒

a).abort方法

執行緒的abrot方法用於永久地停止託管執行緒。

static void main(string args)

public static void createthread()

b).join方法

join方法用來阻止呼叫執行緒,直到某個執行緒終止為止。

static void main(string args)

public static void createthread()

7).執行緒優先順序

執行緒的優先順序值:abrovenormal,blownormal,highest,lowest,normal

static void main(string args)

static void thread1()

static void thread2()

8).執行緒同步

執行緒同步時指併發執行緒高效、有序地訪問共享資源所採用的技術,所謂同步,是指某一時刻只有乙個執行緒可以訪問資源,只有當資源所有者主動放棄了**或資源的所有權時,其他執行緒才可以使用這些資源。

a).使用c#中lock關鍵字實現執行緒同步

statci void main(string args)

void lockthread()

}b).使用monitor類實現執行緒同步

monitor類提供了同步物件的訪問機制,它通過向單個執行緒授予物件鎖來控制對物件的訪問,物件鎖提供限制訪問**塊的能力。當乙個執行緒擁有物件鎖時,其他任何執行緒都不能獲取該鎖。

monitor類的常用方法及說明

enter:在指定物件上獲取排他鎖

exit:釋放指定物件上的排他鎖

pulse:通知等待佇列上的執行緒鎖定物件狀態的更改

pulseall:通知所有的等待執行緒物件狀態的更改

tryenter:試圖獲取指定物件的排他鎖

wait:釋放物件上的鎖並阻止當前的執行緒,直到它重新獲取該鎖

statci void main(string args)

void lockthread()

c).使用mutex類實現執行緒同步

statci void main(string args)

void lockthread()

《c#從入門到精通》讀後總結

執行緒的使用

說到執行緒,有點模糊的概念,但是一直有個疑問沒有弄明白,那就是 它到底在什麼時候用?前幾天在程式中終於用到了,也感受到了它的魅力!現在我把它的用法和為什麼用分享給大家,希望對大家在工作和學習中有所幫助!首先,說說為什麼用它。前段時間我做了乙個給 所有使用者統一傳送郵件的功能,提到使用者,那有上千萬呢...

執行緒 的使用

執行緒man page 安裝 sudo apt get install manpages posix dev 檢視執行緒庫版本 getconf gnu libpthread version建立多少個執行緒?cpu核數 2 2 分割槽 linux day08 守護程序 執行緒 的第 8 頁 cpu核數...

執行緒的使用

h檔案中宣告 執行緒函式要是友元函式 friend uint threadpicturevideoframe lpvoid pparam 執行緒 cwinthread m pthreadtime handle m hstopthread handle m hexitthread ccriticals...