c 的多執行緒

2021-05-17 20:29:18 字數 1059 閱讀 1351

2 通過delegate實現多執行緒

delegate類支援方法

public iasynresult begininvoke(int x,int,y asynccallback cb,object state)

public int endinvoke(iasynresult)

兩者結合可以實現多執行緒非同步呼叫,begininvoke的輸入為delegate的輸入,endinvoke的輸出為delegate的輸出

型別iasynresult

支援非同步呼叫的類會實現該方法,作為開始非同步呼叫的引數,和結束非同步呼叫的方法值。使用方法

asynwaithandle.waitone 表示得到乙個等待執行緒執行完的引用,執行等待知道非同步執行緒處理完成。,

public delegate void asyndelegate(int x,int y)

class

public void asymethod(int x,int y)

console.writeline("total is 「 +(x+y));

public static void main(string args)

asyndelegate ad = new asyndelegate(this.asymethod);

iasynresult ia = ad.begininvoke(5,5,null,null);

ia.asynwaithandle.waitone();

上例中,主線程將被block後一直等待知道非同步執行緒執行完畢。使用**函式,可以使非同步執行緒在執行完畢後主動通知主線程。

使用了begininvoke方法中的引數asyncallback

public delegate void asynccallback(iasynresult ia)

如上例public vid postasymethod(iasynresult ia)

public void main(string args)

iasynresult ia = ad.begininvoke(5,5, new asynccallbac((postasymethod));

c 的多執行緒

多執行緒的使用方法 thread t new thread new threadstart startmethod t.start private void startmethod 多執行緒的功能和非同步呼叫一樣,都是為了不等呼叫的函式執行完,就繼續剩下的語句。parameterizedthread...

C 多執行緒Lock鎖定的使用例子 多執行緒執行緒同步)

這個例子是乙個模擬多個人在多台提款機上同時提取乙個賬戶的款的情況。在訪問的過程中 可能 a執行緒取了100 而b執行緒那邊還看見賬戶上沒少掉那100快,所以導致資料不統一,賦值出現問題。下面 則可以測試出加上lock鎖定 與 不加的區別。先上兩個圖。第乙個 加了lock的程式 加了的 資料每一條都是...

C 多執行緒 四 多執行緒的自動管理 執行緒池

在多執行緒的程式中,經常會出現兩種情況 一種情況 應用程式中,執行緒把大部分的時間花費在等待狀態,等待某個事件發生,然後才能給予響應 這一般使用threadpool 執行緒池 來解決 另一種情況 執行緒平時都處於休眠狀態,只是周期性地被喚醒 這一般使用timer 定時器 來解決 threadpool...