2010-11-12 13 views

risposta

3

In C#, i thread sono thread del sistema operativo o supportati da un pool di thread, che è comunque composto da thread del sistema operativo. Un thread del sistema operativo utilizza sia risorse utente che kernel.

+0

Si noti che i thread .NET sono liberi di essere spostati in un thread OS diverso in qualsiasi momento (nessuna idea di Java, comunque). Ecco perché c'è solo un ID thread gestito. – Cameron

2

In Linux, capisco che si tratta di thread dello spazio utente.

I thread di spazio del kernel di Linux fanno effettivamente parte del sistema operativo e in genere vengono eseguiti con privilegi elevati in modo che possano accedere allo spazio di indirizzi di qualsiasi processo. L'implementazione di thread Java o C# su Linux utilizzando thread dello spazio del kernel non è necessaria e sarebbe estremamente pericolosa. (Ciò presuppone che sia tecnicamente possibile ... che non credo sia il caso.)

+0

Penso che il poster si stia chiedendo se ogni thread Java/.NET è il proprio thread visibile al kernel (es. Thread Kernel-Space) o se molti thread Java/.NET sono programmati da use-space significa usare un singolo kernel visibile thread (es. thread User-Space o * thread leggeri *). – Karmastan

+1

@ Karmastan - Se lo ha fatto, ha usato una terminologia errata. In Linux ci sono in realtà kernel * space * threads; cioè thread eseguiti con accesso a dispositivi fisici, ecc. –