基于.NET程序默认启动线程数讲解
程序员文章站
2024-03-03 20:44:22
问:一个.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();
}
}
通常,clr会根据情况启动更多的特殊线程。
•finalizer线程:该线程负责运行gc进行垃圾对象回收。
•并发的gc线程:gc会根据情况启动更多的线程并发进行垃圾回收。
•服务器gc线程:在服务器gc模式下,clr可能会为多核机器的每个核创建gc托管堆和回收线程。
•调试器帮助线程:该线程负责为类似windbg等调试器提供帮助。
•appdomain卸载线程:clr可能会启动一个工作线程来卸载应用程序域。
•threadpool线程:threadpool会根据情况创建线程。