C 中線程的用法

2022-03-02 06:17:44 字數 1560 閱讀 7543

通過委託的方式建立執行緒

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 於是可以很快的寫出乙個示例程...