线程和进程

更新:2007 年 11 月

在计算机科学中,“线程”和“进程”是两个相关的概念。二者都表示必须按特定顺序执行的指令序列。但是不同线程或进程中的指令可以并行执行。

进程存在于操作系统内,并对应于用户可看作为程序或应用程序的事物。另一方面,线程存在于进程内。因此,线程有时也称作“轻量进程”。每个进程都由一个或多个线程组成。

多个进程的存在使得计算机能够一次执行多个任务。而多个线程的存在使得进程能够分解工作以便并行执行。在多处理器计算机上,进程或线程可以在不同的处理器中运行。这使得真正的并行处理成为可能。

并不总是能够完全并行处理。有时候必须要同步线程。一个线程可能必须等待另一个线程的结果,或者一个线程可能需要独占访问另一个线程正在使用的资源。同步问题是多线程应用程序中出现 bug 的一个常见原因。有时候线程可能最终等待的是永远不会变得可用的资源。这导致了一种称为“死锁”的状况。

Visual Studio 调试器为调试线程和进程提供了功能强大但易于使用的工具。

Visual Studio 中用于调试线程和进程的工具

在 Visual Studio 中用于处理进程的主要工具有“附加到进程”对话框、“进程”窗口和“调试位置”工具栏。用于调试线程的主要工具有“线程”窗口、源窗口中的线程标记和“调试位置”工具栏。

下表显示了可用信息以及可在以上每个位置执行的操作:

用户界面

可用信息

可以执行的操作

“附加到进程”对话框

可以附加的可用进程:

  • 进程名 (.exe)

  • 进程 ID 号

  • 菜单栏标题

  • 类型(托管、x86、x64、IA64)

  • 用户名(帐户名)

  • 会话号

选择要附加的进程。

选择远程计算机。

更改用于连接远程计算机的传输类型

“进程”窗口

附加的进程:

  • 进程名

  • 进程 ID 号

  • 进程 .exe 的路径

  • 菜单栏标题

  • 状态(中断 运行)

  • 调试(本机、托管等。)

  • 传输类型(默认、无身份验证时仅限本机、智能设备)

  • 传输限定符(远程计算机)

工具:

  • 附加

  • 分离

  • 终止

快捷菜单:

  • 附加

  • 分离

  • 调试停止时分离

  • 终止

“线程”窗口

当前进程中的线程:

  • 线程 ID

  • 类别(主线程、接口线程、远程过程调用处理程序或辅助线程)

  • 线程名

  • 创建线程的位置

  • 优先级

  • 挂起级别

快捷菜单:

  • 切换到线程

  • 冻结一个正在运行的线程

  • 解冻冻结的线程

  • 标记一个线程以便进一步研究

  • 取消标记一个线程

  • 重命名一个线程

  • 显示和隐藏线程

其他操作:

  • 查看数据提示中一个线程的调用堆栈

源窗口

左滚动条槽内的线程指示符指示单个或多个线程

快捷菜单:

  • 切换到线程。

  • 标记一个线程以便进一步研究

  • 取消标记一个线程

“调试位置”工具栏

  • 当前进程

  • 当前线程

  • 当前堆栈帧

  • 切换到另一个进程

  • 切换到当前进程中的另一个线程

  • 切换到当前线程中的另一个堆栈帧

  • 标记或取消标记当前线程

  • 仅显示标记的线程

请参见

任务

如何:使用进程窗口

其他资源

附加到运行进程

调试多线程应用程序