当我们创建并启动一个新的.NET线程时,它是否会创建一个新的操作系统级别的线程?

7
当我们以这种方式创建一个新线程时:
Threading.Thread t = new Threading.Thread(() => { Console.WriteLine("My New thread"); });
t.Start();

它是否也会创建一个操作系统级别的线程?


嗯,我不确定那是否应该被称为非托管线程。但是可能只有操作系统级别的线程才能被称为非托管线程。 - Randeep Singh
1个回答

12

技术上讲,这是未定义的,自定义的CLR宿主可以使用任何构造来实现线程。其基础的托管接口是IClrTask。也没有一个合适的方式来找出来。

实际上,这种情况几乎不会发生。IClrTask是应SQL Server组的请求添加的,他们想要将线程映射到纤程的选项。该项目最终失败了,他们无法使其足够稳定。这对于可能有类似计划的任何人来说都是一个警示标志。除非你作为一个插件运行在类似SQL Server的大型非托管程序中,否则你可以始终假设你将使用操作系统线程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接