C 的多執行緒機制初探 2 C 教程

2021-04-15 11:51:31 字數 1026 閱讀 7428

下面我們就動手來建立乙個執行緒,使用thread類建立執行緒時,只需提供執行緒入口即可。執行緒入口使程式知道該讓這個執行緒幹什麼事,在c#中,執行緒入口是通過threadstart**(delegate)來提供的,你可以把threadstart理解為乙個函式指標,指向執行緒要執行的函式,當呼叫thread.start()方法後,執行緒就開始執行threadstart所代表或者說指向的函式。

//threadtest.cs

using system;

using system.threading;

namespace threadtest

 }

}; public class ******

catch (threadstateexception)

return 0;

} }

} 這段程式包含兩個類alpha和******,在建立執行緒othread時我們用指向alpha.beta()方法的初始化了threadstart**(delegate)物件,當我們建立的執行緒othread呼叫othread.start()方法啟動時,實際上程式執行的是alpha.beta()方法:

alpha oalpha = new alpha();

thread othread = new thread(new threadstart(oalpha.beta));

othread.start();

然後在main()函式的while迴圈中,我們使用靜態方法thread.sleep()讓主線程停了1ms,這段時間cpu轉向執行執行緒othread。然後我們試圖用thread.abort()方法終止執行緒othread,注意後面的othread.join(),thread.join()方法使主線程等待,直到othread執行緒結束。你可以給thread.join()方法指定乙個int型的引數作為等待的最長時間。之後,我們試圖用thread.start()方法重新啟動執行緒othread,但是顯然abort()方法帶來的後果是不可恢復的終止執行緒,所以最後程式會丟擲threadstateexception異常。

2 C 的多執行緒機制探索

using system using system.threading namespace threadtest public class catch threadstateexception return 0 這段程式包含兩個類alpha和 在建立執行緒othread時我們用指向alpha.bet...

C 的多執行緒機制初探 2

threadtest.cs using system using system.threading namespace threadtest public class catch threadstateexception return 0 這段程式包含兩個類alpha和 在建立執行緒othread時...

C 的多執行緒機制初探 4 C 教程

expression代表你希望跟蹤的物件,通常是物件引用。一般地,如果你想保護乙個類的例項,你可以使用this 如果你希望保護乙個靜態變數 如互斥 段在乙個靜態方法內部 一般使用類名就可以了。而statement block就是互斥段的 這段 在乙個時刻內只可能被乙個執行緒執行。lock.cs us...