C 中如何使用Thread

2021-10-20 18:30:30 字數 2249 閱讀 1977

執行緒是程序中的最小執行單元,多執行緒是指在給定時間內擁有多個執行緒的能力,並且可以排程它們從而在某一時刻處理多個操作,微軟的 .net framework 提供了 thread 來幫助我們完成多執行緒開發。

thread 程式設計

要想使用 thread,需要在程式中引用 system.threading 命名空間,然後再提供乙個供執行緒排程的方法,這個方法是通過 thread 中的 threadstart 委託**的,下面的**展示了如何建立執行緒。

1thread t = new thread(new threadstart(mythreadmethod));

執行緒建立好之後,還需要呼叫 start 方法去啟動,下面的**展示了如何去實現,哦,對了,上面的 mythreadmethod方法會在新的執行緒上被排程,而不是呼叫執行緒。

class

program

static

void

mythreadmethod()

}

展示執行緒狀態

乙個建立好的執行緒,它的生命週期內會有多個狀態,比如:aborted, background, running, stopped, suspended, unstarted 等等,這些狀態在 thread 中是用 threadstate 列舉表示的,如下**所示:

[

flags

]public

enum threadstate

當乙個 thread 物件建立好之後,它的狀態c#教程就是 unstarted,然而當 start 方法啟動之後,執行緒的狀態將會從 unstarted 切換到 running 狀態,下面的**展示了這種輪轉。

控制線程的 前台和後台

乙個執行緒要麼是前台執行緒要麼是後台執行緒,如果你是通過顯式的方式建立執行緒,它便是前台執行緒,前後執行緒最大的區別在於:應用程python基礎教程式退出的前提必須是程式內的所有前台執行緒都得到退出,相反,應用程式的退出不依賴於後台執行緒。

你可以通過 isbackground 屬性來設定 thread 的前台或者後台,下面的**展示了如何去實現。

static

void

main

(string

args)

除了啟動執行緒,還可以通過 suspend() 和 resume() 方法來 掛起 和 恢復 執行緒, 值得注意的是,你只能 恢復 你之前通過 suspend 方法 掛起的執行緒,如下**所示:

static

void

main

(string

args)

值得注意的是,現在的 thread.suspend() 和 thread.resume() 方法都是被標記成棄用的狀態了,取而代之的做法是:使用 autoresetevent 和 eventwaithandle 方法來實現多執行緒之間的同步。

設定執行緒優先順序

可以給乙個執行緒賦予優先順序,從而和記憶體中的其他執行緒爭搶 cpu 時間,在 c# 中是使用 threadpriority 列舉來表示,大體上有如下值: lowest, belownormal, normal, abovenormal 和 highest,下面的**展示了如何給這兩個執行緒賦予優先順序。

從上面的輸出結果中可以看出,thread1 先於 thread2 執行完,即使 thread2.start 是先啟動的,是不是很好的演示了優先順序的概念。

執行緒是昂貴的,因為執行緒的整個生命週期需要消耗太多的資源,比如:初始化,上下文切換,釋放使用的資源 等等,所以在用 多執行緒 之前需要想好是否真的要這麼做,當用多執行緒的時候,適當的使用 執行緒池 (threadpool) 是乙個非常好的做法,畢竟執行緒池內部會幫你自動建立,釋放,排程執行緒,你只需要傻傻的用即可,同時也是提公升程式響應的利器。

c 中Thread的基本使用

下面再對此進行詳細描述.thread類的建構函式有2類 一種是不帶引數 threadstart 委託 public thread threadstart start 另一種是帶引數 parameterizedthreadstart 委託 public thread parameterizedthre...

C 中的多執行緒使用 Thread 類

好文,現在c 已經建議擯棄使用 suspend,resume 暫停 恢復執行緒,也盡量少用 abort方法中斷乙個執行緒.建議使用執行緒的同步手段有 mutex manualresetevent autoresetevent,monitor.下面再對此進行詳細描述.thread類的建構函式有2類 一...

C 中的多執行緒使用 Thread 類

現在c 已經建議擯棄使用 suspend,resume 暫停 恢復執行緒,也盡量少用 abort方法中斷乙個執行緒.建議使用執行緒的同步手段有 mutex manualresetevent autoresetevent,monitor.下面再對此進行詳細描述.thread類的建構函式有2類 一種是不...