Thread 的概念

作品

書籍

課程

程式集

小說集

論文集

散文集

影片集

編輯雜誌

程式人

電子書

JavaScript

計算語言學

微積分

Blender 動畫

C# 語言

系統程式

高等 C 語言

Java

Android

Verilog

Wikidot

R 統計軟體

機率統計

計算機數學

組合語言

人工智慧

開放原始碼

網路資源運用

計算機結構

相關訊息

常用工具

友站連結

在家教育

RSS

最新修改

網頁列表

簡體版

English

簡介

Thread 在台灣被稱為『執行緒』,但是在中國被稱為『線程』,這是近代作業系統中的一個重要概念,也是程式設計師所必須知道的進階概念之一,這個概念對想學習網路程式設計的人而言特別重要。

在現代的作業系統當中,如果我們將一個程式重複執行兩次,那麼這兩個程式將是毫不相關的。任何一個程式都不需要知道另一個程式是否存在,通常也不會與另一個程式進行溝通。現代的作業系統可以很容易的利用『多工』(Multitask) 機制,『同時』執行許多程式,並讓這些程式不會互相干擾,充分發揮整個電腦的 CPU 與記憶體效能,並協調程式對周邊設備的存取,讓整台電腦發揮最大的功效。

但是,如果我們希望兩個程式能夠互相分享某些變數,但是卻又同時執行,此時就可以利用 Thread 的機制。對於程式設計師而言,Thread 就像一個可以單獨執行的函數,這個函數與其他程式 (包含主程式) 同時執行,感覺上好像互相獨立,但是又可以利用變數存取某些共用變數。這種既獨立執行又能在變數上互相存取的函數,就稱為 Thread 函數。

作業系統中的 Thread

Thread 又稱做輕量級行程 (Light Weight Process),包含了一個程式計數器、一組暫存器和一個堆疊空間,但是又與其他 Thread 共用同一個位址空間,因此 Thread 之間可以互相存取變數。

傳統的行程 (Process) 可以看成是只有一個 Thread 的行程,行程與行程之間不能共用位址空間,也不能互相存取對方的變數。因此,Thread 對程式設計師而言比單獨的 Process 更好用。

對於剛開始接觸 Thread 的程式人員而言,會感覺到相當的詭異。因為『兩個 Thread 同時執行』是一個相當難以理解的概念。事實上,由於 CPU 通常只有一個,所以並非兩個程式真的會『同時』執行,只是『交錯』執行而已。但是這個交錯方式是由作業系統決定的,而非由程式設計師自行安排。通常,程式人員對於這種不能由自己操控決定的情況會有不安的感覺,但是當您多寫幾個程式之後,這種疑慮就會消除了,畢竟,程式人員本來就相當依賴作業系統,只是自己通常感覺不到而已。

若想要看看 Thread 在作業系統當中的地位,請看下列的投影片。

  1. 作業系統與 Thread (ppt at scribd)
  2. 行程管理簡介 (ppt at scribd)

Facebook

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License