1. 程式人生 > >Windows主執行緒和子執行緒的關係

Windows主執行緒和子執行緒的關係

在Windows下最重要的兩個概念,一個是程序,一個是執行緒。

先來說下程序和執行緒的關係,程序是靜態的,它相當於一個存放資料的空間,是放在記憶體中的,可以理解為一個工廠。而執行緒是動態來執行執行緒中的程式碼的,相當於工廠中的工人。看到執行程式碼你可能就會想到CPU了,沒錯,執行緒就是存在於CPU上的。

每個程序必須要包含一個執行緒。這句話怎麼理解了,工廠中沒工人幹活,那麼工廠不就等於於一個廢物?它有存在的意義嗎。。~!!!沒有。。。。   所以每個程序必須有一個主執行緒,而且最少會有一個執行緒。執行緒和程序是相對獨立的,但是又是互相依賴的。沒有工人的工廠沒有意義,沒有工廠的工人也幹不了活。就是這麼理解的。

在來說下主執行緒是什麼,沒錯 !!~~~就是我們的main函式,其實main函式就是我們的主執行緒的入口。程式執行的時候,系統會將我們的程式碼載入到記憶體當中,進入主執行緒,執行程式碼,程式就呼啦呼啦跑起來了。

主執行緒,父執行緒,子執行緒的關係。

這裡必須先說明一點,主執行緒和父執行緒。

主執行緒:可以認為,主執行緒是程式的一條主線,一旦主執行緒結束,程式就結束了。其他所有執行緒都GAME OVER了。簡單理解,主執行緒就是遊戲中的主線任務,主線任務做完了,程式就通關,結束了。

父程序:一個程序中可以有很多的執行緒,CreateTread()函式中就有一個引數可以指定建立執行緒的入口,簡單的說,就是可以自定義一個執行緒啟動入口,這個時候可以新建立一個執行緒,而在這個執行緒中可以在此掉用CreateTread()函式來建立別的執行緒。這樣的話,執行緒之間就可以層層巢狀,就和C++中的父類子類一回事,如果還無法理解,回家看C++繼承。。。。~!!!

但是這裡要說明一點,主執行緒好像不能成為任何執行緒的父執行緒,這個下面會說明的。。。。。

子執行緒:父執行緒的兒子。~!!!!!!!!、

當父執行緒消亡的時候,子執行緒是不會消亡的,是會繼續執行到結束的。。。。。。。~!!!!!這個很重要。。。。。 因為執行緒只有在windows系統的R3層上看來是有巢狀父子關係的,而在核心當中,他們都是獨立的核心物件。。。。。。  重點,都是獨立的。所以,當父執行緒消亡的時候,子執行緒其實是可以繼續執行的。

但是~!!當主執行緒消亡的時候,所有執行緒都得死。。。。都得死。。都得死~~!!!!!重要的事情說三遍。所以我覺得,主執行緒是不能看作任何執行緒的父執行緒的,這裡就不滿足父子執行緒的特性啊。。。。  就是這麼個意思吧。。。。