線程

線程 （ thread ） 是操作系統能夠進行運算調度的最小單位 。 大部分情況下 ， 它被包含在進程之中 ， 是進程中的實際運作單位 。 一條線程指的是進程中一個單一順序的控制流 ， 一個進程中可以並行多個線程 ， 每條線程並行執行不同的任務 。 在Unix System V及SunOS中也被稱爲輕量進程 （ lightweight processes ） ， 但輕量進程更多指內核線程 （ kernel thread ） ， 而把用戶線程 （ user thread ） 稱爲線程 。 線程是獨立調度和分派的基本單位 。 線程可以爲操作系統內核調度的內核線程 ， 如Win32線程 ； 由用戶進程自行調度的用戶線程 ， 如Linux平臺的POSIX Thread ； 或者由內核與用戶進程 ， 如Windows 7的線程 ， 進行混合調度 。 同一進程中的多條線程將共享該進程中的全部系統資源 ， 如虛擬地址空間 ， 文件描述符和信號處理等等 。 但同一進程中的多個線程有各自的調用棧 （ call stack ） ， 自己的寄存器環境 （ register context ） ， 自己的線程本地存儲 （ thread - local storage ） 。 一個進程可以有很多線程來處理 ， 每條線程並行執行不同的任務 。 如果進程要完成的任務很多 ， 這樣需很多線程 ， 也要調用很多核心 ， 在多核或多CPU ， 或支持Hyper - threading的CPU上使用多線程程序設計的好處是顯而易見的 ， 即提高了程序的執行吞吐率 。 以人工作的樣子想像 ， 核心相當於人 ， 人越多則能同時處理的事情越多 ， 而線程相當於手 ， 手越多則工作效率越高 。 在單CPU單核的計算機上 ， 使用多線程技術 ， 也可以把進程中負責I / O處理 、 人機交互而常被阻塞的部分與密集計算的部分分開來執行 ， 編寫專門的workhorse線程執行密集計算 ， 雖然多工比不上多核 ， 但因爲具備多線程的能力 ， 從而提高了程序的執行效率 。