C 執行緒運用基礎

2021-06-27 04:51:21 字數 1292 閱讀 8620

threadstart ts=new threadstart(a.f);//threadstart 是乙個委託,用以關聯a.f方法

thread th=new thread (ts);//thread是乙個類,例項化物件時呼叫的構造函式引數為ts這個委託物件

th.start();//執行緒開始

執行緒的同步控制:

1.使用manualresetevent類,將該類的物件設定為無訊號狀態(reset()方法)或有訊號狀態(set()方法)。waitone()方法阻止當前執行緒執行,直到收

到manualresetevent類物件傳送的資訊為有訊號。將被視為一體的語句序列(執行過程中不允許其他執行緒讀寫共享資料)置於reset()和set()方法之間即為

「執行緒的加鎖」。

2.使用autoresetevent類的方式與上述方式略有差別,在此不詳細介紹。

執行緒池實際上是一種執行緒管理器,由threadpool類提供的方法來維護執行緒。執行緒池可以簡單地理解為存放執行緒的容器。執行緒池中存放若干執行緒,當有任務要執行

的時候,從執行緒池中喚醒乙個執行緒,令它執行該任務;任務執行完畢後,重新將執行緒放回執行緒池(而不是銷毀),並令其處於休眠狀態。這樣,就不需要對執行緒

進行建立和銷毀操作,從而節省時間並使系統更加穩定。

threadpool.queueuserworkitem(new waitcallback(a.f),object)利用執行緒池,無須顯式建立執行緒,只需將要完成的任務寫成函式,然後將其作為引數通過

waitcallback**物件傳遞給queueuserworkitem()方法即可,而後由執行緒池自動建立,管理,執行相應的執行緒。

執行緒對控制項的訪問

在多執行緒程式設計設計中,不允許乙個執行緒訪問在另乙個執行緒中建立的物件。但在許多應用中,恰恰要這麼做。使用contral類提供的invoke()方法可以解決這一

問題。invoke()方法可以呼叫窗體介面執行緒(主線程)中的任何乙個委託物件,原型如下:

invoke(new f(g),new object{})//f()是乙個委託,這個委託關聯的g方法中有對主線程中控制項的操作,方法g的引數寫在object物件陣列中。

有關執行緒常用的一些方法和屬性:

1.abort()方法用於終止執行緒;

2.isbackground屬性有兩個值,true和false,指示執行緒為後台執行緒或者是前台執行緒;

3.執行緒的優先順序由thread類的priority屬性來設定,值集是乙個列舉,即lowest,belownormal,normal,abovenormal,highest

eg:th.priority=threadpriority.lowest;

C 執行緒基礎

執行緒可以說是輕型的程序 多執行緒共享程序的位址空間和資源使得執行緒的上下文切換優於程序 由於執行緒共享資源就會有搶占資源的情況主要的手段有 互斥鎖 條件變數 訊號量等等 簡單回顧下c 多執行緒 include pthread create thread,attr,start routine,arg...

c 執行緒基礎

程序 process 是引用程式的例項要使用的資源的乙個集合 程序就是一種資源,是應用程式所用的資源,乙個exe就是乙個程序 每個程序都被賦予了乙個虛擬位址空間,每個應用程式都在各自的程序中執行來確保應用程式不受其他應用程式的影響,程序是作業系統為我們提供的一種保護應用程式的一種機制。執行緒 thr...

執行緒池的運用

當有很多執行緒的時候就可以用到執行緒池了 executorservice executor executors.newfixedthreadpool 3 這是建立3個固定的執行緒池,如果執行緒有4個,則另乙個只能處於等待狀態 public public static void main string...