图解观察托管程序线程
首先写如下一个控制台小程序;
namespace demo1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello,World!");
Console.ReadLine();
}
}
}
然后用任务管理器查看其线程数;
任务管理器处在别的选项卡时 查看 菜单下面是没有 选择列 菜单的;
切换到 进程 选项卡,才有 选择列 菜单;
点击 选择列 菜单;在弹出的对话框中选中 线程数;确定;
然后可以看demo1的线程数;张银奎老师著《软件调试》言此时线程数是3,我的目前是4;
过了一阵,demo1的线程数目又自己变成了7;这是咋回事;
VS默认是托管调试;如果选中项目属性的 启用非托管代码调试 ;则可进行混合调试;
还是使用托管调试;从VS启动demo1,程序停在Console.ReadLine()时,准备用windbg附加到进程;然后观察线程;
启动windbg,进程列表只有demo1.vshost.exe;没有demo1.exe;
选中 demo1.vshost.exe ,附加;谁知弹出如下对话框;下次再搞;
下面用ProcessExplorer来观察线程;
从vs启动调试demo1.exe,进程列表只有demo1.vshost.exe;
看一下他的线程情况;
再单独启动demo1.exe看一下情况;
clr.dll是 .net 的运行环境;
托管程序有三个线程:
与内存回收密切相关的终结器线程;支持调试的辅助调试线程;然后就是程序自己的初始线程;
我曾在项目上用过ProcessExplorer,比较有效;当时参与一个 短彩信群发业务(SGIP协议) 项目,见此;
https://blog.csdn.net/bcbobo21cn/article/details/90487493
当时短信群发程序有长连接和短连接,还有单连接和多连接;
单连接和多连接是指线程数;收发双方都是套接字程序;单连接就是指收发双方程序都是单线程;
如果程序支持多连接,当发的一方开5个线程发送,则收的一方会自动开5个线程接收;
当时判断本地联通的短信接收程序是不支持多连接的,但是最好用技术手段验证;
用ProcessExplorer观察线程数;发送程序增加5或几个线程发送,在ProcessExplorer里就看到,发送程序的线程数增加了几个;同时用ProcessExplorer查看接收程序线程数,不论发送程序新开5或多个线程发送,接收程序的线程数是不变的;故可知本地联通的短信接收程序是不支持多连接的。
图解观察托管程序线程相关推荐
- Windbg教程-调试非托管程序的基本命令上
Windbg是跟visual studio差不多的一个调试器,可以用来调试非托管程序(native application),也可以调试托管程序(managed application).它比VS强的 ...
- 性能追击:万字长文30+图揭秘8大主流服务器程序线程模型 | Node.js,Apache,Nginx,Netty,Redis,Tomcat,MySQL,Zuul
本文为<高性能网络编程游记>的第六篇"性能追击:万字长文30+图揭秘8大主流服务器程序线程模型". 最近拍的照片比较少,不知道配什么图好,于是自己画了一个,凑合着用,让 ...
- Windbg 教程-调试非托管程序的基本命令下
前面的文章调试非托管程序的基本命令中讲到如何使用windbg在程序中设置断点,既然断点已经设置好了,下一步就是直接执行程序,程序中断以后,第一件事情就是查看堆栈.在windbg中查看堆栈使用k命令就可 ...
- 观察多个线程同时运行|| 查看进程线程的方法——未完待续
观察多个线程同时运行:主要是理解,交替执行,谁先谁后,不由我们控制 查看进程线程的方法
- Windbg教程-调试非托管程序的基本命令中
前面的文章调试非托管程序的基本命令上讲到如何在windbg里面启动一个程序并且加载调试符号文件.一旦符号文件加载完毕以后,就可以进行调试了,例如设置断点,查看堆栈信息等等. 因为是刚刚启动程序(mai ...
- 精馏塔matlab,MATLAB图解精馏塔理论塔板数程序代码
<MATLAB图解精馏塔理论塔板数程序代码>由会员分享,可在线阅读,更多相关<MATLAB图解精馏塔理论塔板数程序代码(6页珍藏版)>请在人人文库网上搜索. 1.MATLAB图 ...
- Android应用程序线程消息循环模型分析
出自:http://blog.csdn.net/luoshengyang/article/details/6905587 我们知道,Android应用程序是通过消息来驱动的,即在应用程序的主线程(UI ...
- 托管代码与非托管代码之间与托管程序
自.Net问世以后,我们习惯的VC++,VB编程模式有了很大的变换,托管与非托管的概念也不断映入程序员们的眼帘,可以说.NET正逐步成为编程的主流语言和平台之一.今天不与大家讨论谁主沉浮,也不发表慷慨 ...
- 托管程序与非托管程序的区别
原始地址:http://www.cnblogs.com/springcsc/archive/2008/12/25/1362515.html 一般一个可执行文件的内部都包含一个PE头,系统根据PE的信息 ...
最新文章
- javascript使用Json总结
- oracle:ORA-01940无法删除当前已连接用户的解决方案
- YJX_rxjh_10_2.5.2
- 【千字分析】剑指 Offer 46. 把数字翻译成字符串
- Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(4) - 数据传输指令
- 刷题upupup【Java中Queue、Stack、Heap用法总结】
- python︱函数、for、if、_name_、迭代器、防范报错、类定义、装饰器、argparse模块、yield
- SQL数据同步到ELK(四)- 利用SQL SERVER Track Data相关功能同步数据(上)
- skywalking 6.1 简明指南
- LinkButton(按钮)
- S-function入门及案例详解(1)——S-function基础介绍及基本案例
- vue移动端实现电子签名画板
- 原始对偶方法——转载
- 中环混改尚存变数 高调的TCL要上演“资本魔输”?
- NSDI 2021 Breaking the Transience-Equilibrium Nexus: A New Approach to Datacenter Packet Transport笔记
- 总体和个体,样本和样本值
- android系统应用的平台化开发
- 画线 css,CSS画线方法
- ChatGPT中GPT三个字母到底是什么意思
- Swift语言Storyboard教程:第一部分
热门文章
- Vue el-menu高亮设置及点击菜单项实现路由跳转
- Chrome 插件开发-右键菜单开发实战演示,浏览器页面右键菜单选项设置,插件右键菜单点击插件名跳转主页设置
- 【POJ1321棋盘问题】【poj2251Dungeon Master】【poj3278Catch That Cow】【poj1426Find The Multi】
- [YTU]_2635(P4 游戏中的Human角色)
- 5.2 matlab多项式计算(多项式的四则运算、求导、求值、求根)
- Sparsity稀疏编码(三)
- java executorser 停止_Java使用ExecutorService来停止线程服务
- ORM框架SQLAlchemy学习笔记
- [***]HZOJ 优美序列
- vue----常用实例方法--$mount(),$destroy(),$watch(),$forceUpdate()