ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++ 控制台程序的线程分析

2022-03-03 20:35:02  阅读:200  来源: 互联网

标签:exe C++ dll pslist 线程 进程 控制台 加载


在无任何功能代码的情况下运行控制台,会发现有三个线程在运行

 

 

 SO 的答案指出,在程序一开始运行时,为加快进程启动,windows 会利用多个 CPU 内核更快地初始化。

ntdll.dll 线程实际上是从链接的库启动的操作系统线程,所有代码都在线程 26372 上运行。

通常这些线程池工作者为应用程序加载其他动态库。

参考:why a c++ application has three threads started by default?

大概过半分钟后,ntdll.dll 线程就会自动消失

 

 因为 Windows 10 实现了一种加载 DLL 的新方法 - 多个工作线程并行执行 ( LdrpWorkCallback)。所有 Windows 10 进程现在都有几个这样的线程。

 创建了一个特殊的加载器线程池 - LdrpThreadPool,具有 LoaderThreads - 1 最大线程数。空闲超时设置为 30 秒(之后线程退出)

所以我们会发现只剩下一个线程了,详细解释见:Why there are three unexpected worker threads when a Win32 console application starts up?


 线程工具使用:VS 编译器中选择调试 -> 窗口 -> 线程,就会默认打开一个窗口,在代码上打个断点后,窗口就会自动出现线程信息

另外一个工具使用:pslist.exe 下载:https://docs.microsoft.com/en-us/sysinternals/downloads/pslist

使用命令:pslist.exe 查看所有进程的信息,包括线程的数量

                  pslist.exe -d pid  pid 为进程 ID,查看特定进程的线程信息

标签:exe,C++,dll,pslist,线程,进程,控制台,加载
来源: https://www.cnblogs.com/strive-sun/p/15961629.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有