.NET线程模型

汉斯

当我们通过ThreadPoolTask.RunThread对象在.NET中创建线程时,该线程是映射到单个Windows线程还是可以映射到多个线程?换句话说,.Net CLR线程模型是什么?有人可以在这里阐明一下吗?

PS这里JVM也提出类似的问题,但是我找不到类似的问题.NET

苏尼乌斯

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

MSDN

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

但是,您可以通过调用Thread.BeginThreadAffinity来要求CLR不要将托管线程移动到另一个OS线程

这意味着.NET线程模型为N:M。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章