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

.NET线程模型

  •  1
  • Hans  · 技术社区  · 6 年前

    当我们在.NET中通过 ThreadPool Task.Run 或A Thread 对象,该线程是映射到单个Windows线程,还是可以映射到多个线程?换句话说,什么是 Threading Model .NET CLR? 有人能在这里熄灯吗?

    聚苯乙烯 :类似问题 JVM 已被问及 here 但是我找不到类似的 .NET .

    1 回复  |  直到 6 年前
        1
  •  2
  •   Sunius    6 年前

    默认情况下,每个托管线程都映射到单个OS线程。但是,通过使用CLR托管API,可以将托管线程迁移到不同的本机OS线程。

    MSDN :

    操作系统线程ID与托管的没有固定关系 线程,因为非托管主机可以控制 托管和非托管线程。具体来说,一个成熟的主机可以 使用clr宿主API根据 相同的操作系统线程,或在 不同的操作系统线程。

    但是,可以通过调用 Thread.BeginThreadAffinity .

    这意味着.NET线程模型是n:m。