代码之家  ›  专栏  ›  技术社区  ›  GurdeepS

CurrentThread/ProcessThread对象

c#
  •  1
  • GurdeepS  · 技术社区  · 14 年前

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

    谢谢

    2 回复  |  直到 14 年前
        1
  •  3
  •   Scott Weinstein    14 年前

    这个 CurrentThread System.Threading.Thread 类是当前CLR 系统线程 实例。CLR线程是对底层win32线程的抽象。这个 System.Diagnostics.ProcessThread 类提供对win32线程的访问,主要用于性能跟踪。

    CLR线程的一个关键区别是它们不是固定到win32线程。

        2
  •  14
  •   Hans Passant    14 年前

    这是.NET2.0设计时SQLServer项目的遗留问题。他们向CLR小组施压 真正地 很难断开.NET线程类和操作系统线程之间的链接。他们当时有理由相信,SQLServer支持作为光纤实现的“轻量级”线程。光纤是“共同例程”的Windows实现,大约在15年前很流行。

    这个项目失败了,他们无法使它足够可靠。可悲的是,我们被困在 将线程映射到进程线程的简单方法。相当大的损失。也许有人,有一天,会利用解偶联,我还没有看到它做。

    现在唯一可用的映射是在线程本身内部P/Invoke GetCurrentThreadId()。返回一个可以与ProcessThread.Id匹配的TID。