一般編程知識 - Thread
Thread(台譯為執行緒;內地譯為線程),在古舊的系統(如DOS)上無Thread可言,因為系統在執行程式時會把所有資源撥給該程式,即是在同一時間內系統只可以運行一個程式。
隨電腦技術不斷進步,人們發覺無Thread會造成使用不方便、浪費資源(如CPU的空閒時間),開始引入有Thread的系統(如Windows 3.1),不過Thread只限於系統管理程式上,以輪流運算每一個Thread,所以每一個程式也會分配到一段時間的資源。
現在常見的操作系統(如Linux)多為多工作業系統,每一個程式也可以產生子Thread,同樣地可以控制子Thread的執行優先次序、暫停、結束等等。
為何須要Thread?
在結構編程中,一個程式擁有好多好多的區塊(C, C++, Java以{}包圍的地方為一區塊(block)),而程式會直接把系統所撥給的所有資源運用到那區塊中,直至該區塊結束才會輪到下一個區塊。如果該區塊只是輸出How are you?,那樣很快便辦妥,自然有機會輪到其他的區塊。但假設這個是MPEG編碼器程式,當您把一套60分鐘的DV編碼成為DVD,在壓縮的區塊中不斷運算,但操控畫面的區塊沒有運行、以致畫面怎麼也沒有變,您可能會氣急敗壞地亂按鍵盤,怎至重新啟動操作系統。
現在的處理器以步入雙核心的時代,有些主機板怎至支援兩個處理器、這即是同時可以有4個運算核心,這樣便可分流Thread到一些較空閒的運算核心,使資源得到最佳的運用。
常見的運用方法
一個Thread做主要運算,另一個Thread作介面運算,避免用戶以為當機而關掉程式。以加密程式為例子,加密部份當然是主要運算,當執行時當以其為主,而介面運算為其次。相信很多人也樂意分配較高的優先次序與主Thread,至於其他Thread只屬協助性質,只要間中更改完成百份比,那已可得知程式正在運行;及給一個機會使用者按取消,那樣使程式更加易於使用。
|