.NET程序默认启动线程数
问:一个.NET程序在运行时到底启动了多少个线程?
答:至少3个。
- 启动CLR并运行Main方法的主线程
- 调试器帮助线程
- Finalizer线程

class Program
{
static void Main(string[] args)
{
Console.WriteLine("Main thread: {0}",
Thread.CurrentThread.ManagedThreadId);
Console.ReadKey();
}
}
ProcessExplorer
http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx)
通常,CLR会根据情况启动更多的特殊线程。
- Finalizer线程:该线程负责运行GC进行垃圾对象回收。
- 并发的GC线程:GC会根据情况启动更多的线程并发进行垃圾回收。
- 服务器GC线程:在服务器GC模式下,CLR可能会为多核机器的每个核创建GC托管堆和回收线程。
- 调试器帮助线程:该线程负责为类似WinDbg等调试器提供帮助。
- AppDomain卸载线程:CLR可能会启动一个工作线程来卸载应用程序域。
- ThreadPool线程:ThreadPool会根据情况创建线程。
Short answer, there are other threads with the main thread that are required to support the application.
This can be tested in Visual Studio.
Create a simple Console application. Put a debug point, and start debugging. Once the application gets to that debug point, open "Threads" windows by
Debug -> Windows -> Threads
You will see something like:
Some of the above threads are for debugger, but mostly an app would have main thread, GC (Garbage Collection) and Finalizer thread etc.
参考:
http://www.cnblogs.com/gaochundong/archive/2013/04/18/dotnet_app_default_thread_count.html
http://stackoverflow.com/questions/38854906/default-threading-model-for-a-net-application
Things to ignore when debugging an ASP.NET hang
.NET程序默认启动线程数的更多相关文章
- ab压力测试-突破最大线程数
ab压力测试中,发现你一次最多只能启动1024个线程 默认情况下,一个线程的栈要预留1M的内存空间 而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程 但是内存当然不可能 ...
- quartz 使用配置文件配置线程数
quartz默认的线程数是10个,如果我们要修改这个线程数需要做一个配置文件,在配置文件内修改线程. 一共需要2个操作: 1.找到quartz的XML配置文件,设置加载配置文件(配置文件存放在weba ...
- CPU个数、CPU核心数、CPU线程数
CPU个数.CPU核心数.CPU线程数 我们在选购电脑的时候,CPU是一个需要考虑到核心因素,因为它决定了电脑的性能等级.CPU从早期的单核,发展到现在的双核,多核.CPU除了核心数之外,还有线程数之 ...
- [转发]CPU个数、CPU核心数、CPU线程数
我们在选购电脑的时候,CPU是一个需要考虑到核心因素,因为它决定了电脑的性能等级.CPU从早期的单核,发展到现在的双核,多核.CPU除了核心数之外,还有线程数之说,下面文本就来解释一下CPU的核心数与 ...
- 【转】cpu的核心数与线程数的关系
原文地址:http://www.dn580.com/dnzs/dncs/2013/10/08/172948914.html 我们在选购电脑的时候,CPU是一个需要考虑到核心因素,因为它决定了电脑的性能 ...
- cpu个数、核数、线程数、Java多线程关系的理解
cpu个数.核数.线程数.Java多线程关系的理解 2017年12月08日 15:35:37 一 cpu个数.核数.线程数的关系 cpu个数:是指物理上,也及硬件上的核心数: 核数:是逻辑上的,简单理 ...
- 转 根据CPU核心数确定线程池并发线程数
转自: https://www.cnblogs.com/dennyzhangdd/p/6909771.html?utm_source=itdadao&utm_medium=referral 目 ...
- Java并发(八)计算线程池最佳线程数
目录 一.理论分析 二.实际应用 为了加快程序处理速度,我们会将问题分解成若干个并发执行的任务.并且创建线程池,将任务委派给线程池中的线程,以便使它们可以并发地执行.在高并发的情况下采用线程池,可以有 ...
- 记一次 .NET 某工控数据采集平台 线程数 爆高分析
一:背景 1. 讲故事 前几天有位朋友在 B站 加到我,说他的程序出现了 线程数 爆高的问题,让我帮忙看一下怎么回事,截图如下: 说来也奇怪,这些天碰到了好几起关于线程数无缘无故的爆高,不过那几个问题 ...
随机推荐
- CentOS7 PostgreSQL 主从配置( 一)
主库配置 pg_hba.conf host replication all 10.2.0.0/0 trust postgresql.conf listen_addresses = '*' max_wa ...
- 经常出现null错误之tostring
如果需要转换的类型可能为null,如果使用tostring就可能引发错误,这时候可以使用convert.tostring方法.
- NavigationBar的显隐和颜色设置
[self.navigationController setNavigationBarHidden:NO animated:NO]; self.navigationController.navigat ...
- Inno Setup入门(八)——有选择性的安装文件
这主要使用[Components]段实现,一个演示的代码如下: [setup] ;全局设置,本段必须 AppName=Test AppVerName=TEST DefaultDirName=" ...
- redis配置密码认证
redis配置密码 1.通过配置文件进行配置yum方式安装的redis配置文件通常在/etc/redis.conf中,打开配置文件找到 ? 1 #requirepass foobared 去掉行前的注 ...
- iwlist等工具的移植
http://blog.csdn.net/jk110333/article/details/8658054 参考了这边文章 -------------------------------------- ...
- TextUtils判断
System.out.println(TextUtils.isEmpty(null)); System.out.println(TextUtils.isEmpty(""));
- Hibernate 系列教程5-双向多对一
主要讲解inverse和cascade的用法 cascade定义的是关系两端对象到对象的级联关系: 而inverse定义的是关系和对象的级联关系(管理外键的值). inverse 属性默认是false ...
- 安卓开发-使用XML菜单布局简单介绍
使用xml布局菜单 目前为止我们都是通过硬编码来增加菜单项的,android为此提供了一种更便利的方式,就是把menu也定义为应用程序的资源,通过android对资源的本地支持,使我们可以更方便地 ...
- 留言本,keyCode
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...