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

Ran*_*eep 7 .net c# multithreading

当我们以这种方式创建一个新线程时:

Threading.Thread t = new Threading.Thread(() => { Console.WriteLine("My New thread"); });
t.Start();
Run Code Online (Sandbox Code Playgroud)

它是否也会创建一个OS级别的线程?

Han*_*ant 12

从技术上讲,这是未定义的,自定义CLR主机可以使用任何构造来实现线程.底层托管接口是IClrTask.找不到合适的方法.

实际上这从未发生过.IClrTask是在SQL Server组的请求下添加的,它希望选择将线程映射到光纤上.那个项目最终失败了,他们无法让它足够稳定.给任何可能有类似计划的人发出红旗.除非您充当类似于SQL Server的大型非托管程序的插件,否则您始终可以假设您将使用OS线程.