c 前台和後台執行緒

2022-03-02 08:17:34 字數 965 閱讀 1391

net的公用語言執行時(common language runtime,clr)能區分兩種不同型別的執行緒:前台執行緒和後台執行緒。這兩者的區別就是:應用程式必須執行完所有的前台執行緒才可以退出;而對於後台執行緒,應用程式則可以不考慮其是否已經執行完畢而直接退出,所有的後台執行緒在應用程式退出時都會自動結束。

這麼說可能不知道有什麼區別:

前台執行緒和後台執行緒的區別和聯絡:

1、後台執行緒不會阻止程序的終止。屬於某個程序的所有前台執行緒都終止後,該程序就會被終止。所有剩餘的後台執行緒都會停止且不會完成。

2、可以在任何時候將前台執行緒修改為後台執行緒,方式是設定thread.isbackground 屬性。

3、不管是前台執行緒還是後台執行緒,如果執行緒內出現了異常,都會導致程序的終止。

4、託管執行緒池中的執行緒都是後台執行緒,使用new thread方式建立的執行緒預設都是前台執行緒。

參考:

static void main(string args)

class sampletread

public void countnumbers()

print");}}

}

執行結果為,當前臺執行緒執行完畢後那麼後台執行緒也會退出。其實在作業系統中根本就沒有前後執行緒這個概念,那麼為什麼會有這個東西呢?

意義何在?本來是這樣子的當我們的主線程結束的時候其他執行緒也應該結束,因為釋放了我們的執行緒物件了,如果主線程結束的時候不釋放其他執行緒那麼其他執行緒的危害性真的太大了,所以c#為我們提供了前台執行緒和後台執行緒這個概念讓操作執行緒變得比較簡單。

至於怎麼用,看具體專案了,後台執行緒往往起到輔助性的功能。比如說winform,在關閉視窗後執行緒程序依然沒有關閉,這就是因為關閉close後去執行關閉主線程,其他執行緒關閉後主執行緒才會安全關閉。

這就是為什麼你還可以看到其他執行緒的原因,當然你看到還有其他執行緒的原因可能是多個程序,其他程序的主線程沒有關閉,這個需要具體分析了。

c 前台執行緒和後台執行緒

前台執行緒 在主線程執行結束後,若前台執行緒沒有執行完則會阻止主線程的關閉 後台執行緒 在主線程執行結束後,整個執行緒會結束 class threadsample public void countnumbers prints thread.currentthread.name,i static v...

C 前台執行緒和後台執行緒

程序會等待所有的前台執行緒完成後再結束本工作 但是如果只剩下後台執行緒,則會直接結束本工作,不會等待後台執行緒完成後再結束本工作。1 new thread建立的執行緒 預設情況下使用new thread 方法建立的執行緒為前台執行緒,可以通過手動設定isbackground屬性來建立乙個後台執行緒 ...

c 的前台執行緒和後台執行緒

1.執行緒分類 執行緒由程式設計師建立,可是建立的方式不同,總體來說有兩種,一種是個人構造,也就是使用thread類new執行緒物件建立,這一類執行緒是大部分程式設計師知道的,也叫專用線程 還有一種是由clr建立,這一類執行緒主要存在於執行緒池中,也叫執行緒池執行緒。對於這兩種執行緒的好壞,個人建議...