在說執行緒(Thread)時就要先知道什麼是程式(Program)、程序(Process),才能了解什麼是執行緒(Thread),因為它們間都有著神秘的關係與關聯,再更深入一點就又會有多程序(muti-Process)、多執行緒(muti-Thread),我們就先一一說明好了,了解它們後再使用時就可以更知道它們是怎麼運行的了。
一、程式(Program)
指的就是我們所寫的程式碼(code)可以對電腦下的指令,但還未執行也就是還未載入到記憶體的狀態。
二、程序(Process)
也可稱「行程」、「進程」,當程式執行後就會載入到記憶體內就會成為程序,每行程式隨時會被CPU執行,例如:觸發某按鈕被CPU來執行程式碼等。程序非基本執行單位,而是執行緒的容器。
三、執行緒(Thread)
也可稱「線程」,一個執行緒會負責某一項功能。以Google Chrome瀏覽器為例,它未開啟時的狀態是程式(Program),把瀏覽器打開後進入首頁畫面此時程式(Program)就會進入程序(Process)狀態,那麼瀏覽器中有打字搜尋、語音搜尋、Google應用程式...等等功能,這些能發揮出功能的部分就是依靠不同功能的執行緒(Thread)所負責的哦!!
因此,在同一個程序就不一定只有一個執行緒,可能就會有多個執行緒。
⊙Program、Process、Thread重點與關係
.一個程式(Program)可以執行多次,產生多個程序(Process)
.每一個程序(Process)都是互相獨立的
.每一個程序(Process)會有一個記憶體空間和一個以上的執行緒(Thread)所組成
.每一個執行緒(Thread)由Stack和紀錄CPU內部暫存器的狀態所組成
Stack:紀錄函數呼叫的路徑、所有用到的區域變數。
CPU內部暫存器的狀態:內容包含程式計數器PC(Program Counter)、堆疊指標SP(Stack Pointer)、程式狀態字PSW(Program Status Word)。
四、多程序(muti-Process)
在同一段時間內去做不同的事。例如這一個小時的家事分配:爸爸去切水果、媽媽去煮飯、小孩們去丟垃圾。有多個程序[行程](Process)各有一個或多個執行緒(Thread)在執行,彼此程序[行程](Process)會有各自的資料空間,若要共用則需要特別的方法來傳遞,依照作業系統(OS)而定。
五、多執行緒(muti-Thread)
在同一段時間內只做一件事。例如這一個小時的家事:全家先一起煮飯,再切水果,最後再一起去丟垃圾。一個程序[行程](Process)會有多個執行緒(Thread)在執行,彼此就會共用相同的資料空間。
⊙muti-Process、muti-Thread重點與差異
.多程序(muti-Process)可以在相同的時間內完成較多的工作
多執行緒(muti-Thread)同樣的工作有機會用更短的時間內完成
.多程序(Multi-process)會比多執行緒(Multi-thread)更消耗資源
[因為多程序中每個Process都需要一些資源來工作]
.有多核心處理器的電腦就可以做多程序(muti-Process)、多執行緒(Multi-thread)