2010-11-12 74 views

回答

3

在C#中,線程是OS線程,或由線程池支持,線程池由操作系統線程組成。操作系統線程同時使用用戶和內核資源。

+0

請注意,.NET線程隨時可以自由移動到不同的操作系統線程(儘管不知道Java)。這就是爲什麼只有一個託管線程ID。 – Cameron 2012-06-29 00:46:14

2

在Linux中,我明白它們是用戶空間線程。

Linux內核空間線程實際上是操作系統的一部分,通常以高權限運行,以便他們可以訪問任何進程的地址空間。在Linux上使用內核空間線程實現Java或C#線程是不必要的,而且會非常危險。 (這假定它在技術上是可行的......我不認爲是這種情況)。

+0

我認爲海報問是否每個Java/.NET線程是它自己的內核可見線程(即內核空間線程),或者是否有很多Java/.NET線程按使用空間調度意味着使用單個內核可見線程(即用戶空間線程或*輕量級線程*)。 – Karmastan 2010-11-13 23:20:41

+1

@Karmastan - 如果他這樣做,他會使用錯誤的術語。在Linux中確實有內核*空間*線程;即通過訪問物理設備運行的線程等。 – 2010-11-14 07:23:07