2017-10-05 393 views

回答

0

用戶模式線程在進程中由用戶模式調度,而進程本身是內核調度程序處理的唯一東西。

這意味着你的進程從CPU獲得一定數量的咕嚕聲,你必須在你的所有用戶模式線程中共享它。

簡單情況下,您有兩個進程,一個使用單個線程,另一個使用一百個線程。

使用簡單的內核調度策略,單線程進程中的線程獲得50%的CPU,百線程進程中的每個線程各獲得0.5%。

使用內核模式線程,內核本身管理您的線程並獨立調度它們。使用相同的簡單調度程序,每個線程只會在CPU咕嚕聲的1%以下(101線程共享100%的CPU)觸摸。

0

用戶級線程的一個問題是:如果一個線程阻塞,整個進程就會阻塞。 即使其他線程可以運行並與被阻塞的線程無關。對於操作系統,它不知道線程,所以整個過程都被阻塞了。

+0

你可以給我一些線程阻塞的例子嗎? –

+1

@ You'reawesome,等待I/O的線程就是一個例子。等待釋放信號量的線程是另一個。 –

相關問題