在这本书中,我读到,Thread
类的每个实例实际上都在分配一个内核对象 - 这是使用 Thread
的开销之一。
据我所知,线程不是内核对象(在这种情况下只有进程是内核对象。进程包含的线程不是内核对象?)
谁能解释一下吗?
最佳答案
Thread首先是一个托管对象,你知道System.Threading.Thread类。接下来是一个内部 CLR 对象,一个 C++ 类,也称为 Thread。其中涉及大量的管道,就像冰山一样。该管道当然使用了内核对象,其中有五个。您可以在 Taskmgr.exe 中看到一些内容。其中之一是 native 操作系统线程句柄,其他四个有点神秘,但可能是同步对象句柄。
.NET 2.0 中线程与实际 Windows 线程对象的解耦是非常臭名昭著的。这仅在技术上是可能的,没有任何知名人士真正实现过使其工作的 CLR 主机。对于 SQL Server 团队来说,用纤程实现 Thread 是一个重要的项目,但他们放弃了。无法使其足够可靠。据我所知,还没有尝试过。
关于c# - 线程是内核对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9329433/