c 多執行緒入門記錄

2022-08-03 21:33:14 字數 1510 閱讀 1117

記錄下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...