執行緒是作業系統能夠進行運算調度的最小單位。它被包含在進程之中,是進程中的實際運作單位。一條線程指的是進程中一個單一順序的控制流,一個進程中可以並發多個線程,每個線程並行執行不同的任務。
執行緒是獨立調度和分派的基本單位。線程可以為作業系統核心調度的核心線程,如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中文網其他相關文章!