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

Moh*_*deh 9 .net c# multithreading

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

Han*_*ant 11

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

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