问:一个.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会根据情况创建线程。
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!
相关文章:
-
-
-
详解c# 泛型类的功能
在泛型类中,由于不知道泛型参数t是什么类型,可能是引用类型,也可能是值类型,因此不能将null等赋予泛型类型。如何对泛型对象赋初值、如何保证泛型的正确性等,以使...
[阅读全文]
-
C# 元组和值元组的具体使用
c# 7.0已经出来一段时间了,大家都知道新特性里面有个对元组的优化:valuetuple。这里利用详尽的例子详解tuple vs valuetuple(元组类...
[阅读全文]
-
C# 操作网络适配器的示例
1、对网络适配器进行配置string ethernetip = system.configuration.configurationmanager.appset...
[阅读全文]
-
C#表达式目录树示例详解
1、表达式目录树 表达式目录树,在c#中是expression来定义的,它是一种语法树,或者说是一种数据结构。其主要用于存储需要计算、运算的一种结构,它只提供...
[阅读全文]
-
c# 通过代码开启或关闭防火墙
通过代码操作防火墙的方式有两种:一是代码操作修改注册表启用或关闭防火墙;二是直接操作防火墙对象来启用或关闭防火墙。不论哪一种方式,都需要使用管理员权限,所以操作...
[阅读全文]
-
-
-
-
-
网友评论