基礎篇C# 簡介開發環境變數與運算流程控制陣列函數物件例外處理函式庫篇檔案處理資料結構正規表達式Thread應用篇視窗程式媒體影音網路程式遊戲程式手機程式資料庫雲端運算特殊功能委派擴展方法序列化LinQWPF網路資源教學影片投影片教學文章軟體下載考題解答101習題 |
簡介Thread 在台灣被稱為『執行緒』,但是在中國被稱為『線程』,這是近代作業系統中的一個重要概念,也是程式設計師所必須知道的進階概念之一,這個概念對想學習網路程式設計的人而言特別重要。 在現代的作業系統當中,如果我們將一個程式重複執行兩次,那麼這兩個程式將是毫不相關的。任何一個程式都不需要知道另一個程式是否存在,通常也不會與另一個程式進行溝通。現代的作業系統可以很容易的利用『多工』(Multitask) 機制,『同時』執行許多程式,並讓這些程式不會互相干擾,充分發揮整個電腦的 CPU 與記憶體效能,並協調程式對周邊設備的存取,讓整台電腦發揮最大的功效。 但是,如果我們希望兩個程式能夠互相分享某些變數,但是卻又同時執行,此時就可以利用 Thread 的機制。對於程式設計師而言,Thread 就像一個可以單獨執行的函數,這個函數與其他程式 (包含主程式) 同時執行,感覺上好像互相獨立,但是又可以利用變數存取某些共用變數。這種既獨立執行又能在變數上互相存取的函數,就稱為 Thread 函數。 作業系統中的 ThreadThread 又稱做輕量級行程 (Light Weight Process),包含了一個程式計數器、一組暫存器和一個堆疊空間,但是又與其他 Thread 共用同一個位址空間,因此 Thread 之間可以互相存取變數。 傳統的行程 (Process) 可以看成是只有一個 Thread 的行程,行程與行程之間不能共用位址空間,也不能互相存取對方的變數。因此,Thread 對程式設計師而言比單獨的 Process 更好用。 對於剛開始接觸 Thread 的程式人員而言,會感覺到相當的詭異。因為『兩個 Thread 同時執行』是一個相當難以理解的概念。事實上,由於 CPU 通常只有一個,所以並非兩個程式真的會『同時』執行,只是『交錯』執行而已。但是這個交錯方式是由作業系統決定的,而非由程式設計師自行安排。通常,程式人員對於這種不能由自己操控決定的情況會有不安的感覺,但是當您多寫幾個程式之後,這種疑慮就會消除了,畢竟,程式人員本來就相當依賴作業系統,只是自己通常感覺不到而已。 若想要看看 Thread 在作業系統當中的地位,請看下列的投影片。
|
Thread 的概念
page revision: 1, last edited: 10 Jun 2010 01:01
Post preview:
Close preview