注:基元指可以再代碼中使用的最簡單的構造.
線程基元構造分爲兩種,用戶模式和內核模式.
用戶模式分析:
優點:
1、速度比內核模式塊,使用特殊cpu指令來協調線程,協調實在硬件級別發生的.
2、在此構造上的線程池線程一旦發生阻塞,並不會創建的新的線程,因爲它不會認爲自己發生阻塞.。
3、cpu指令只會阻塞線程很短的時間
缺點:
1、只能內核才能停止當前構造的線程池線程.
2、用戶模式構造的線程會被系統線程搶佔,期間,他會在用戶模式中保持運行,導致浪費cpu時間,本可以去做別的時間哪怕是停止也好,停止能省電.
內核模式分析:
優點:內核模式構造的線程在等待別的線程運行資源時,會發生阻塞避免浪費cpu資源,當運行資源可用時會被重新喚起.
缺點:將線程從用戶模式切換到內核付出的代價很大.所以避免使用內核模式線程構造.
兩種模式對於在一個構造上等待的線程,如果擁有這個構造的線程不釋放,在用戶模式下,就是活鎖,既佔用cpu資源又耗費內存.在內核模式下,稱爲死鎖,僅消耗內存.