記錄下c#多執行緒的常用使用方法。基礎:乙個程序可以包含多個執行緒,把程序比作工廠,用來完成某個業務,那麼執行緒相當於該工廠的車間。多個車間相互合作完成各自的任務。使得工廠完成它的業務。而車間與車間是共享使用乙個工廠的資源的如電力、人力、資金等。
命名空間:using system.threading;
-呼叫乙個委託的begininvoke方法可以開啟乙個執行緒
```c#```
static void testmethod()
static void main(string args)
```注意:
begininvoke的兩引數。第乙個是乙個委託引數m,第二個是object引數o。 m是**委託,當ar執行完畢後會呼叫m,而o是這個m的引數。
```c#```
//這裡演示,當函式有引數和返回值時的情況
static int testmethod(string str)
static void main(string args)
console.writeline("main");
//這裡用於等待執行緒執行完畢。2000代表最長等待時間 單位是毫秒。
console.readkey();
}```
輸出:測試執行緒
測試結束
100main
用**方式也可檢測結束,以下為**方式的main函式
```c#```
static void main(string args),null)
console.writeline("main");
console.readkey();
}```
輸出:main
測試執行緒
測試結束
100-例項化乙個tread物件,也可以開啟乙個執行緒。
```c#```
static void testmethod(object o)
static void main(string args)
```輸出:
main
測試執行緒test
測試結束
注意:採用這種方式,函式不能有返回值,引數必須為object型。thread有四種構造方式,其餘種類可查msdn。當然該種方法,也可以將執行緒執行單獨寫乙個類,執行某個物件的成員方法。返回值的問題很容易就解決了。
thread 物件提供多種對執行緒的操作方式。如start、abort、join等,這裡不再多加介紹,可自行查詢。
注意避免 死鎖
c#
static void x()}}
static void y()}}
上述是一段 可能發生死鎖的偽**。 即當執行緒y 將b加鎖後,且執行緒x將a加鎖後,即死鎖。兩線程都無法等待到第二個加鎖資料的自由狀態。將x、y中的a、b加鎖順序保持一致,則可以避免該種情況。
C 多執行緒程式設計入門
handle createthread in sec attrs securityattributes,in ulong stacksize,initial stack size in sec thread start startfunction,thread function in pvoid t...
多執行緒入門
跟前幾篇的風格一樣,我會在開篇的時候舉乙個現實生活中的例子,通過這個例子來對映一些晦澀枯燥的計算機程式設計專業知識,在讓讀者朋友很好地理解理論概念的同時,又避免了閱讀教科書時的枯燥感覺。這次我要舉的例子是公司。不一定是it公司,盡量和程式設計領域遠一點兒吧,那就假設是一家搬家公司吧。假如我們把公司看...
C 學習記錄 多執行緒相關
之前學過一點c語言多執行緒方面的內容 pthread.h 但是僅僅是會用,對多執行緒的實現原理什麼的基本上算是不了解。接下來,我的網路程式設計學習要進一步對 進行優化,其中肯定少不了對多執行緒的運用,所以在進行下一步之前,先系統的學習一下多執行緒。本篇學習記錄使用的語言為c 呼叫的執行緒庫為c 11...