CurrentThread / ProcessThread对象

时间:2010-05-31 21:49:22

标签: c#

在.NET BCL中,有一个CurrentThread和一个ProcessThread对象。这些有什么区别?

由于

2 个答案:

答案 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线程。