可以認為執行緒是乙個虛擬程序,用於獨立執行乙個特定的程式。
1.使用c#建立執行緒
using在上面的**中,步驟4定義了方法 printnumber , 該方法會被主線程和新建立的執行緒使用。system;
using
system.threading; //3
namespace
mutithreaddemo
//4static
void
printnumber()}}
}
在我們構造乙個執行緒時,threadstart 或 parameterizedthreadstart 的例項委託會傳給建構函式。
我們只需指定在不同執行緒執行的方法名,而 c# 編譯器則會在後台建立這些物件。
執行結果:兩組範圍為1 -10的數字會隨機交叉輸出。這說明了pringnumber方法同時執行在主線程和另乙個執行緒。(如果10個數字隨機交叉不明顯,可以增加到100試試)
2.暫停執行緒
這裡展示如何讓乙個執行緒等待一段時間而不用消耗作業系統資源。
using在printnumberswithdeplay方法中加入了thread.sleep方法呼叫。這會導致執行緒在執行該**時,在列印任何數字之前會等待指定的時間(這裡是2秒鐘)。system;
using
system.threading;
namespace
mutithreaddemo
static
void
printnumbers()
}static
void
printnumberswithdelay()}}
}
3.執行緒等待
這裡將展示如何讓程式等待另乙個程式中的計算完成,然後在**中使用該執行緒的計算結果。
使用thread.sleep行不通,因為並不知道計算需要花費的具體時間。
using執行結果:system;
using
system.threading;
namespace
mutithreaddemo
static
void
printnumberswithdeplay()}}
}
當程式執行時,啟動了乙個耗時較長的執行緒來列印數字,列印每個數字前要等待兩秒。
但是我們在主程式中呼叫了 t.join 方法,該方法允許我們等待直到執行緒 t 完成。
當執行緒 t 完成時,主程式會繼續執行。
借助該技術可以實現在兩個執行緒間同步執行步驟。
4.終止執行緒
c 執行緒基礎之原子操作
使用system.threading.interlocked類可以提高執行緒的安全性,具體資料參考msdn http msdn.microsoft.com zh cn library system.threading.interlocked.aspx 一般情況下,在子執行緒內使用i 這樣的方式訪問全...
c 之執行緒總結 一
在我們做專案的時候會經常用到執行緒,但執行緒也不是萬能的,用執行緒需要注意的東西也很多,自己做了一下總結 這次總結主要說三個部分 1 執行緒之委託方法 2 給執行緒傳參 3 三種方法控制線程同步 我們先看一下小例子 在方法裡我們定義了乙個 threadstart ts new threadstart...
C 執行緒基礎
執行緒可以說是輕型的程序 多執行緒共享程序的位址空間和資源使得執行緒的上下文切換優於程序 由於執行緒共享資源就會有搶占資源的情況主要的手段有 互斥鎖 條件變數 訊號量等等 簡單回顧下c 多執行緒 include pthread create thread,attr,start routine,arg...