2010-11-12 72 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