首先写如下一个控制台小程序;

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或多个线程发送,接收程序的线程数是不变的;故可知本地联通的短信接收程序是不支持多连接的。

图解观察托管程序线程相关推荐

  1. Windbg教程-调试非托管程序的基本命令上

    Windbg是跟visual studio差不多的一个调试器,可以用来调试非托管程序(native application),也可以调试托管程序(managed application).它比VS强的 ...

  2. 性能追击:万字长文30+图揭秘8大主流服务器程序线程模型 | Node.js,Apache,Nginx,Netty,Redis,Tomcat,MySQL,Zuul

    本文为<高性能网络编程游记>的第六篇"性能追击:万字长文30+图揭秘8大主流服务器程序线程模型". 最近拍的照片比较少,不知道配什么图好,于是自己画了一个,凑合着用,让 ...

  3. Windbg 教程-调试非托管程序的基本命令下

    前面的文章调试非托管程序的基本命令中讲到如何使用windbg在程序中设置断点,既然断点已经设置好了,下一步就是直接执行程序,程序中断以后,第一件事情就是查看堆栈.在windbg中查看堆栈使用k命令就可 ...

  4. 观察多个线程同时运行|| 查看进程线程的方法——未完待续

    观察多个线程同时运行:主要是理解,交替执行,谁先谁后,不由我们控制 查看进程线程的方法

  5. Windbg教程-调试非托管程序的基本命令中

    前面的文章调试非托管程序的基本命令上讲到如何在windbg里面启动一个程序并且加载调试符号文件.一旦符号文件加载完毕以后,就可以进行调试了,例如设置断点,查看堆栈信息等等. 因为是刚刚启动程序(mai ...

  6. 精馏塔matlab,MATLAB图解精馏塔理论塔板数程序代码

    <MATLAB图解精馏塔理论塔板数程序代码>由会员分享,可在线阅读,更多相关<MATLAB图解精馏塔理论塔板数程序代码(6页珍藏版)>请在人人文库网上搜索. 1.MATLAB图 ...

  7. Android应用程序线程消息循环模型分析

    出自:http://blog.csdn.net/luoshengyang/article/details/6905587 我们知道,Android应用程序是通过消息来驱动的,即在应用程序的主线程(UI ...

  8. 托管代码与非托管代码之间与托管程序

    自.Net问世以后,我们习惯的VC++,VB编程模式有了很大的变换,托管与非托管的概念也不断映入程序员们的眼帘,可以说.NET正逐步成为编程的主流语言和平台之一.今天不与大家讨论谁主沉浮,也不发表慷慨 ...

  9. 托管程序与非托管程序的区别

    原始地址:http://www.cnblogs.com/springcsc/archive/2008/12/25/1362515.html 一般一个可执行文件的内部都包含一个PE头,系统根据PE的信息 ...

最新文章

  1. javascript使用Json总结
  2. oracle:ORA-01940无法删除当前已连接用户的解决方案
  3. YJX_rxjh_10_2.5.2
  4. 【千字分析】剑指 Offer 46. 把数字翻译成字符串
  5. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(4) - 数据传输指令
  6. 刷题upupup【Java中Queue、Stack、Heap用法总结】
  7. python︱函数、for、if、_name_、迭代器、防范报错、类定义、装饰器、argparse模块、yield
  8. SQL数据同步到ELK(四)- 利用SQL SERVER Track Data相关功能同步数据(上)
  9. skywalking 6.1 简明指南
  10. LinkButton(按钮)
  11. S-function入门及案例详解(1)——S-function基础介绍及基本案例
  12. vue移动端实现电子签名画板
  13. 原始对偶方法——转载
  14. 中环混改尚存变数 高调的TCL要上演“资本魔输”?
  15. NSDI 2021 Breaking the Transience-Equilibrium Nexus: A New Approach to Datacenter Packet Transport笔记
  16. 总体和个体,样本和样本值
  17. android系统应用的平台化开发
  18. 画线 css,CSS画线方法
  19. ChatGPT中GPT三个字母到底是什么意思
  20. Swift语言Storyboard教程:第一部分

热门文章

  1. Vue el-menu高亮设置及点击菜单项实现路由跳转
  2. Chrome 插件开发-右键菜单开发实战演示,浏览器页面右键菜单选项设置,插件右键菜单点击插件名跳转主页设置
  3. 【POJ1321棋盘问题】【poj2251Dungeon Master】【poj3278Catch That Cow】【poj1426Find The Multi】
  4. [YTU]_2635(P4 游戏中的Human角色)
  5. 5.2 matlab多项式计算(多项式的四则运算、求导、求值、求根)
  6. Sparsity稀疏编码(三)
  7. java executorser 停止_Java使用ExecutorService来停止线程服务
  8. ORM框架SQLAlchemy学习笔记
  9. [***]HZOJ 优美序列
  10. vue----常用实例方法--$mount(),$destroy(),$watch(),$forceUpdate()