在.NET BCL中,有一个CurrentThread和一个ProcessThread对象。这些有什么区别?
由于
答案 0 :(得分:13)
在设计.NET 2.0时,它是SQL Server项目的宿醉。他们迫使CLR团队非常打破了.NET Thread类和操作系统线程之间的联系。他们有理由在当时,SQL Server支持以光纤形式实现的“轻量级”线程。光纤是Windows实现的“共同例程”,大约15年前很流行。
该项目是一个半身像,他们无法让它足够可靠。遗憾的是,我们坚持使用 no 将线程映射到ProcessThread的简单方法。相当亏损。也许有一天,有人会利用解耦,我还没有看到它完成。
现在唯一可用的映射是线程内部的P / Invoke GetCurrentThreadId()。返回一个可以与ProcessThread.Id匹配的TID。
答案 1 :(得分:3)
CurrentThread
类上的System.Threading.Thread
静态属性是当前的CLR System.Threading.Thread
实例。 CLR Thread是对底层win32线程的抽象。 System.Diagnostics.ProcessThread
类提供对win32线程的一次访问,主要用于性能跟踪。
CLR线程的一个关键区别是它们没有固定到win32线程。