c# - 线程是内核对象吗?

标签 c# .net clr

在这本书中,我读到,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/

相关文章:

c# - C#中的堆栈容量

c# - C# 可以反射(reflect) VB.NET .dll 程序集吗

c# - byte[] 到 C# 中的 byte*

c# - 如何在没有 Entity Framework 的情况下连接到 ASP.NET Core 中的数据库?

.net core - 工作单元通用存储库模式

c# - 在 C# 中清除 ColorConvertedBitmap

jvm - JVM 或 CLR 是否使用寄存器来运行 JIT 代码?

c# - ASP.NET Core - 单例注入(inject)时存储库依赖项注入(inject)失败

c# - 使用 MVC5 和 OWIN 的自定义标识

C# 编码(marshal)处理 - 获取 C char** 的内容并转换为 byte[]