我想知道在.Net中创建托管线程(通过调用Thread.Start()
)是否会导致在后台创建一个本机线程?
那么托管线程是否有相应的本机线程?
如果是,当托管线程等待或休眠时,是否意味着相应的本机线程也在等待或休眠?
答案 0 :(得分:10)
是的,.NET线程映射到所有当前CLR主机上的本机操作系统线程。
可选择通过ICLRTaskManager interface将其映射到托管api中的其他内容,就像光纤一样,但实际上并未在任何主流主机中实现。 .NET 2.0时间范围内的SQL Server团队尝试了这一点,但是当项目无法使其足够可靠时,该项目就被放弃了。这没有再次尝试。从技术上讲,你可以遇到一个由非托管程序启动的自定义托管CLR,它实现了这种映射,但几率很低。