欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

基于.NET程序默认启动线程数讲解

程序员文章站 2024-03-02 09:14:10
问:一个.net程序在运行时到底启动了多少个线程? 答:至少3个。 1.启动clr并运行main方法的主线程2.调试器帮助线程3.finalizer线程复制代码 代码如...

问:一个.net程序在运行时到底启动了多少个线程?

答:至少3个。

1.启动clr并运行main方法的主线程
2.调试器帮助线程
3.finalizer线程

复制代码 代码如下:

class program
  {
    static void main(string[] args)
    {
      console.writeline("main thread: {0}",
        thread.currentthread.managedthreadid);
      console.readkey();
    }
  }

基于.NET程序默认启动线程数讲解

通常,clr会根据情况启动更多的特殊线程。

•finalizer线程:该线程负责运行gc进行垃圾对象回收。
•并发的gc线程:gc会根据情况启动更多的线程并发进行垃圾回收。
•服务器gc线程:在服务器gc模式下,clr可能会为多核机器的每个核创建gc托管堆和回收线程。
•调试器帮助线程:该线程负责为类似windbg等调试器提供帮助。
•appdomain卸载线程:clr可能会启动一个工作线程来卸载应用程序域。
•threadpool线程:threadpool会根据情况创建线程。