c# 裡多執行緒程式設計寫法有很多種,這裡記錄三種。
thread 算是比較常用的寫法,出來時間也比較早,一般分帶引數和不帶引數兩種寫法:
thread thread1 = new thread(new threadstart(threadmethod1));//不帶引數
thread1.start();
thread thread2 = new thread(new parameterizedthreadstart(threadmethod2));//帶引數
task 是 .net 4.0 才有的,嚴格的說,task 不應該放在這裡和 thread 相提並論,因為它們壓根不一樣,什麼意思?簡單的說:
task 應該和 thread pool 比較合適,因為他們是處理一類任務的。在thread pool時期,我們不能知道乙個workitem是否完成,也不能在完成後知道workitem所得出的返回值,task就是封裝後解決這個問題的。當然這個只是小方面。task還優化了thread pool的呼叫機制,在多核的情況下可以得到更好的效率。
下面介紹 task 寫法:
task.factory.startnew(() => );//方式1
task task = new task(()=> );//方式2
task.start();
task.run(() => {}); //方式3
當然還有很多種過載寫法,具體請自行查閱。
同樣,task 也有等待方法 :
async 和 await 是 .net 4.5才有的,它提供了更簡潔的非同步程式設計寫法:
async 方法中,也可以等待其它 task , 但是不能用waitall, 只能用whenall, 否則可能會卡住當前執行緒,比如:
非同步程式設計中,執行緒之間只要互不影響,考慮同步問題即可。而在並行程式設計中,則要求多個執行緒在同一時刻同時執行。必須要有多核cpu。
static void main(string args)
);}
c 並行程式設計
本部落格將看c 並行程式設計的例子 1.執行緒程序原理 執行緒是輕量級的程序,乙個程序可以擁有多個執行緒。編譯多執行緒程式加入 g lphread 2.openmp庫加速 2.1 openmp庫加速配置及hello,world 事實上有個openmp庫,可以實現單台cpu的加速 windows下使用...
C 非同步程式設計
同步方法和非同步方法的區別 同步方法呼叫在程式繼續執行之前需要等待同步方法執行完畢返回結果 非同步方法則在被呼叫之後立即返回以便程式在被呼叫方法完成其任務的同時執行其它操作 非同步程式設計概覽 net framework 允許您非同步呼叫任何方法。定義與您需要呼叫的方法具有相同簽名的委託 公共語言執...
C 非同步程式設計
一 基礎知識 1 非同步程式設計 2 非同步方法 乙個程式呼叫某個方法,在處理完成前就返回該方法。同步和非同步主要用於修飾方法。當乙個方法被呼叫時,呼叫者需要等待該方法執行完畢並返回才能繼續執行,我們稱這個方法是同步方法 當乙個方法被呼叫時立即返回,並獲取乙個執行緒執行該方法內部的業務,呼叫者不用等...