首頁 > 常見問題 > 什麼是線程

什麼是線程

青灯夜游
發布: 2020-09-05 17:19:52
原創
72013 人瀏覽過

執行緒是作業系統能夠進行運算調度的最小單位。它被包含在進程之中,是進程中的實際運作單位。一條線程指的是進程中一個單一順序的控制流,一個進程中可以並發多個線程,每個線程並行執行不同的任務。

什麼是線程

執行緒是獨立調度和分派的基本單位。線程可以為作業系統核心調度的核心線程,如Win32線程;由用戶進程自行調度的用戶線程,如Linux平台的POSIX Thread;或者由核心與用戶進程,如Windows 7的線程,進行混合調度。

同一進程中的多條執行緒將共享該進程中的全部系統資源,如虛擬位址空間,檔案描述符和訊號處理等等。但同一進程中的多個執行緒有各自的呼叫堆疊(call stack),自己的暫存器環境(register context),自己的執行緒本地儲存(thread-local storage)。

一個行程可以有很多線程,每個線程並行執行不同的任務。

特點

在多線程OS中,通常是在一個行程中包含多個線程,每個執行緒都是作為利用CPU的基本單位,是花費最小開銷的實體。線程具有以下屬性。

1)、輕量實體

執行緒中的實體基本上不擁有系統資源,只是有一點必不可少的、能保證獨立運作的資源。

執行緒的實體包括程式、資料和TCB。執行緒是動態概念,它的動態特性由執行緒控制區塊TCB(Thread Control Block)來描述。

2)、獨立調度和分派的基本單位。

在多執行緒OS中,執行緒是能獨立運作的基本單位,因而也是獨立調度和分派的基本單位。由於線程很“輕”,故線程的切換非常迅速且開銷小(在同一進程中的)。

3)、可並發執行。

在一個行程中的多個執行緒之間,可以並發執行,甚至允許在一個行程中所有執行緒都能並發執行;同樣,不同行程中的執行緒也能並發執行,充分利用和發揮了處理機與週邊設備並行工作的能力。

4)、共享進程資源。

在同一進程中的各個線程,都可以共享該進程所擁有的資源,這首先表現在:所有線程都具有相同的位址空間(進程的位址空間),這意味著,線程可以存取該位址空間的每一個虛擬位址;此外,還可以存取進程所擁有的已開啟檔案、定時器、信號量機構等。由於同一個進程內的線程共享記憶體和文件,所以線程之間互相通信不必調用內核。

以上是什麼是線程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板