每个托管线程都有自己的相应本机线程吗?

时间:2013-10-20 11:00:54

标签: c# .net multithreading

我想知道在.Net中创建托管线程(通过调用Thread.Start())是否会导致在后台创建一个本机线程? 那么托管线程是否有相应的本机线程? 如果是,当托管线程等待或休眠时,是否意味着相应的本机线程也在等待或休眠?

1 个答案:

答案 0 :(得分:10)

是的,.NET线程映射到所有当前CLR主机上的本机操作系统线程。

可选择通过ICLRTaskManager interface将其映射到托管api中的其他内容,就像光纤一样,但实际上并未在任何主流主机中实现。 .NET 2.0时间范围内的SQL Server团队尝试了这一点,但是当项目无法使其足够可靠时,该项目就被放弃了。这没有再次尝试。从技术上讲,你可以遇到一个由非托管程序启动的自定义托管CLR,它实现了这种映射,但几率很低。