Windows中分配CPU時間的基本單位是執行緒。執行緒是作業系統能夠進行運算調度的最小單位。它被包含在進程之中,是進程中的實際運作單位。
一條執行緒指的是行程中單一順序的控制流,一個行程中可以並發多個線程,每個執行緒並行執行不同的任務。 (建議學習:PHP影片教學)
在Unix System V及SunOS中也被稱為輕量級進程(lightweight processes),但輕量進程更多指核心執行緒(kernel thread),而把使用者執行緒(user thread)稱為執行緒。
執行緒是獨立調度和分派的基本單位。
線程可以為作業系統核心調度的核心線程,如Win32線程;由用戶進程自行調度的用戶線程,如Linux平台的POSIX Thread;或者由核心與用戶進程,如Windows 7的線程,進行混合調度。
線程是行程中的實體,一個行程可以擁有多個線程,一個執行緒必須有一個父行程。執行緒不擁有系統資源,只有執行必須的一些資料結構;它與父行程的其它執行緒共享該行程所擁有的全部資源。線程可以創建和撤消線程,從而實現程式的並發執行。
一般,執行緒具有就緒、阻塞和運行三種基本狀態。
在多中央處理器的系統裡,不同執行緒可以同時在不同的中央處理器上執行,甚至當它們屬於同一個行程時也是如此。大多數支援多處理器的作業系統都提供程式介面來讓進程可以控制自己的執行緒與各處理器之間的關聯度(affinity)。
有時候,執行緒也稱作輕量級進程。就像進程一樣,執行緒在程式中是獨立的、並發的執行路徑,每個執行緒都有它自己的堆疊、自己的程式計數器和自己的局部變數。但是,與分隔的進程相比,進程中的執行緒之間的隔離程度較小。
它們共享記憶體、檔案句柄和其它每個進程應有的狀態。
進程可以支援多個線程,它們看似同時執行,但互相之間並不同步。一個進程中的多個執行緒共享相同的記憶體位址空間,這意味著它們可以存取相同的變數和對象,而且它們從同一堆中分配對象。
儘管這讓執行緒之間共享資訊變得更容易,但您必須小心,確保它們不會妨礙同一進程中的其它執行緒。
更多PHP相關技術文章,請造訪PHP圖文教學欄位進行學習!
以上是分配cpu的基本單位的詳細內容。更多資訊請關注PHP中文網其他相關文章!