CLR线程模型信息

本文关键字:信息 模型 线程 CLR | 更新日期: 2023-09-27 18:04:52

我想知道System.Threading.Thread如何在CLR中工作。我猜CLR中的线程是"轻量级的",这意味着它们是多对一映射到内核线程的……但是谁来调度这些线程呢?当我创建一个线程时,它是否总是创建一个相应的"内核"线程,除非线程的数量大于物理内核的数量?它是否尝试在可用的内核上调度这些线程?

CLR线程模型信息

您可以检查SSCLI。它是CLR 2.0在c++中公开可用的源代码,又名ROTOR项目。这是唯一能揭示真相的地方。

UPD:如果有人感兴趣,在评论中有线索可以在转子中找到实际的东西;)

MSDN:

操作系统的ThreadId与托管线程没有固定的关系,因为非托管主机可以控制托管和非托管线程之间的关系。具体来说,一个复杂的主机可以使用Fiber API来针对同一个操作系统线程调度许多托管线程,或者在不同的操作系统线程之间移动托管线程。

没有"最终答案/文档"…

在这种情况下,您通常需要检查源(如果可用)-或者使用类似Reflector的东西来获得源…这可能是压倒性的数量,但肯定会给你你想要的答案…