程序 執行緒的關閉過程

2022-08-02 20:18:15 字數 766 閱讀 5029

程序關閉過程:

1)關閉程序內的所有執行緒(終止遺留執行緒)

2)釋放所有的使用者物件和gdi物件,關閉所有核心物件(引用計數-1,當減為0的時候銷毀核心物件)

3)程序的推出**從still_active變為傳給exitprocess或terminateprocess的**

4)程序的核心物件變為已觸發狀態

5)程序核心物件引用計數-1

在windows下,程序 return 0 的實際執行過程:

1)先析構main函式內的區域性物件

2)返回至啟動物件

3)呼叫exit函式,由exit呼叫doexit函式,在doexit函式內析構全域性物件

4)呼叫exitprocess終止程序

執行緒關閉過程:

1)執行緒所擁有的使用者物件控制代碼會被釋放。乙個執行緒終止時,系統會自動銷毀由執行緒建立或安裝的任何視窗,並解除安裝由執行緒建立或安裝的任何hook。

2)執行緒的推出**由still_active轉變為exitthrea或terminatethread函式的**。

3)執行緒核心物件變為觸發態。

4)如果該執行緒是程序的最後乙個執行緒,則會終止程序活動。

5)執行緒核心物件引用計數減1.

執行緒函式返回,執行過程:

1)執行緒函式中所建立的所有c++物件都通過其析構函式釋放

2)作業系統**執行緒棧區記憶體

3)作業系統將執行緒的退出**設定為執行緒返回值。

4)執行緒核心物件引用計數減1

執行緒 程序學習之三 程序的關閉

關閉程序自然會想到exitprocess 不過好像純粹的呼叫exitprocess不嫩結束開啟的應用程式,只能結束本程式 執行產生的exe程式 檢視了一些還有triminateprocess也能終止程序,效果相當於管理器中直接掐掉程序 exitprocess 只能強制執行本程序的退出,如果要在乙個程...

程序建立多少執行緒,程序建立的過程,執行緒建立的過程

程序能建立多少執行緒與程序邏輯位址空間 32位位址長度的話,就是4gb 更具體地說應該是有程序位址空間中記憶體對映區的大小有關,執行緒棧是通過mmap系統呼叫在記憶體對映區建立的。和執行緒棧 1mb 的大小有關。程序建立的過程 unix和linux採用另一種方式 它把建立程序分成兩步,fork 和e...

執行緒關閉 主線程和子執行緒的關閉

今天寫執行緒,再網頁上找了些關閉執行緒的栗子,給大家整理一下 多執行緒程式的開發中,啟動了多個執行緒的程式在關閉的時候卻出現了問題,如果程式退出的時候不關閉執行緒,那麼執行緒就會一直的存在,但是大多啟動的執行緒都是區域性變數,不能一一的關閉,如果呼叫thread.currentthread.abor...