通過委託的方式建立執行緒
static int sum(int x)
return x+x;
funca = sum;
建立乙個新的執行緒格式:a.begininvoke(10);
獲取乙個執行緒的返回值:iasyncresult ar = a.begininvoke(10,null,null);
//第二種方法 iasyncresult ar = a.begininvoke(10,oncallback,a);
//第三種方法,使用lanmba表示式,例如:
/* iasyncresult ar = */ a.begininvoke(10,ar=>
int res = a.endinvoke(ar);
console.writeline(res);
},null)
第乙個null引數代表**函式,例如:
static void oncallback(iasyncresult ar)
第二個null引數是**函式傳遞的資料,例如:
funca = ar.asyncstate as func; // 把ar.asyncstate型別轉換為func型別的物件
獲取執行緒返回值的狀態:ar.iscompleted的返回值true為執行緒結束,false為執行緒還未結束。
獲取執行緒的執行的結果:int res = a.endinvoke(ar);
用thread建立執行緒
建立執行緒:thread t = new thread(function); // function為需要啟動乙個新的執行緒來執行的函式
啟動執行緒:t.start(); // 如果function有引數(必須是object型別),則function的引數由start函式來傳遞
獲取執行緒id:thread.currentthread.managedthreadid
也可以自己寫乙個類,例如:
class mythread
public void downfile(string filename,string filepath)
}在program中呼叫
mythread myt = new mythread("filename","filepath");
thread t = new thread(myt.down);
t.start();
設定後台執行緒的方法,例如:t.isbackground = true;
執行緒分為前台執行緒與後台執行緒,後台執行緒會伴隨著前台執行緒的結束而被強制結束
強制終止乙個執行緒:t.abort();
優先執行的執行緒:t.join(); // 暫停當前程式,先執行t.join()然後再執行當前未執行完的執行緒
c#中的執行緒池
c#中已經封裝好了乙個執行緒池threadpool,在雙核的條件下預設1023個工作執行緒,和1000個i/o執行緒。所有執行緒為後台執行緒
呼叫執行緒池的方法:threadpool.queueuserworkitem(function); // function為自定義函式,這個函式要有乙個object型別的乙個引數
像乙個正在執行的執行緒加鎖的用法:lock(加鎖的物件);
c 中線程池
只有乙個前台執行緒在執行,應用程式的程序就在執行,如果多個前台執行緒在執行,但是main方法結束了,應用程式的程序任然是執行的,指導所有的前台執行緒完成其任務為止。在預設情況下,用thread建立的執行緒都是前台執行緒,執行緒池中的執行緒總是後台執行緒。在用thread類建立執行緒的時候,可以設定i...
c 中線程同步
c 中線程同步 monitor方法 這裡只是學習筆記 執行緒同步 monitor方法 執行緒同步就是協調多個執行緒間的併發操作,以獲得符合預期的 確定的執行結果,消除多執行緒應用程式執行中的不確定性,它包含兩個方面 1.保護資源 或 即確保資源 或 同時只能由乙個執行緒 或指定個數的執行緒 訪問,一...
Java中線程同步的簡單用法
應用場景 應用程式需要新建若干執行緒進行事務處理,這些執行緒處理完畢後,應用程式會進行一些後續的操作。解決辦法 使用object.wait object.notify 方法。object.wait 方法會阻斷當前執行緒的執行,直到其他執行緒呼叫object.notify 於是可以很快的寫出乙個示例程...