12

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

4

1 回答 1

14

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

有一个选项可以通过ICLRTaskManager 接口将其映射到托管 api 中的其他内容,例如纤程,但这实际上并未在任何主流主机中实现。SQL Server 团队在 .NET 2.0 时间框架内尝试过此操作,但由于无法使其足够可靠而放弃了该项目。这没有再次尝试。从技术上讲,您可能会遇到由非托管程序启动的自定义托管 CLR,它实现了此映射,但几率相当低。

于 2013-10-20T11:15:15.403 回答