2017-09-14 120 views

回答

0

簡答案用戶空間線程。 根據我對系統知識的回答,一個進程(或線程)不是用戶級別或內核級別。

某些關鍵任務不能由用戶直接訪問,例如內存和IO。要使用這些resources,內核將會公開API's。 這些API最好稱爲system calls。 所以你的線程可能會在你的程序中使用那些system calls。但是你不能只產卵內核線程

+0

如果我使用pthread庫來創建線程,那麼這些線程是不是內核級線程 – user3282758

+0

我還不清楚Python線程模塊在我們創建新的python線程時是否內部使用pthread_create,還是創建用戶級別線程 – user3282758

1

,正確的說法是不內核空間線程(因爲Python沒有訪問內核內存空間),但內核級線程threading模塊使用系統提供的機制(如POSIX系統上的pthread),通常依靠內核接口(通過Linux上的clone(CLONE_THREAD)創建任務)。

Python支持用戶級線程(那些純粹在解釋器中實現並且只佔用一個內核級線程的線程)通過生成器,greenlet和類似的庫。

+0

這意味着不同於pthread(它創建內核空間線程),Python線程模塊爲我們提供了用戶空間線程 – user3282758

+0

@ user3282758:'線程'很有可能在引擎蓋下使用'pthread'。 – myaut

+0

如果在引擎蓋下使用pthread,那我們爲什麼不把它們稱爲內核空間線程 – user3282758