1. 程式人生 > >核心級執行緒 和 使用者級執行緒

核心級執行緒 和 使用者級執行緒



 從執行緒實現的角度看,執行緒可以分成使用者級執行緒,核心級執行緒和輕量級執行緒。

  在核心級執行緒的實現中,執行緒管理的所有工作由作業系統核心來做,核心專門提供API供開發者使用,應用程式區不需要有執行緒管理的程式碼。核心級執行緒的優點:在多處理器上,核心能排程同一程序中多個執行緒併發執行;若程序中一個執行緒被阻塞,核心能排程同一程序的其他執行緒佔有處理器執行,也可以執行其他程序中的執行緒;由於核心執行緒僅有很小的資料結構和堆疊,因此核心級執行緒的切換比較快,核心自身也可以用多執行緒技術實現,從而提高系統的執行速度和效率。核心級執行緒的缺點:應用程式執行緒在使用者態執行,而執行緒管理和排程

在核心實現,在同一程序中,控制權從一個執行緒傳送到另一個執行緒時需要使用者態-核心態-使用者態的模式切換,系統開銷較大。

 在使用者級執行緒的實現中,執行緒管理的全部工作都由應用程式來做,在使用者空間內來實現,核心是不知道執行緒的存在的。使用者級多執行緒由使用者空間執行的執行緒庫來實現,任何應用程式均需要通過執行緒庫進行程式設計,再與執行緒庫連線後執行來實現多執行緒。使用者級執行緒的優點:執行緒切換不需要核心特權方式;按應用特定需要允許程序選擇排程演算法。使用者級執行緒的缺點:在傳統的基於程序作業系統中,大多數系統呼叫將阻塞程序,因此當執行緒執行一個系統呼叫時,不僅該執行緒被阻塞,而且程序內的所有執行緒會被阻塞;不能成分利用多重處理的優點,即使在多處理機環境中,同一程序中的多個執行緒也不能真正並行。

windows上用API CreateThread()等建立的執行緒就是核心級執行緒.開源的pthread就是一個使用者級執行緒。