我如何确定我有一个具有两个线程的进程,还是两个进程?

我如何确定我有一个具有两个线程的进程,还是两个进程?

我注意到 chrome(现在很有名)在任务管理器中创建了大量实例。那是很多线程和一个进程吗?或者是多个进程。也就是说,任务管理器显示的是线程,还是进程?

假设我转到 orb/start,然后启动 cmd,然后再次转到那里并启动另一个 cmd。这是两个独立的进程,而不是一个进程有两个线程吗?

现在假设我启动一个 cmd,然后从那里启动另一个 cmd。这是一个进程两个线程吗?还是两个进程?

答案1

Windows“任务管理器”仅有的显示流程。(否则你会看到很多所有内容的重复项,因为几乎所有 Windows 应用程序都是多线程的,包括 Chrome。)要查看进程的线程,请使用进程探索器或者进程黑客;它们两者在流程属性对话框中都有一个“线程”选项卡。

当你通过以下方式运行某些东西时跑步…或命令提示符,它总是以新进程的形式启动。它作为现有进程中的新线程没有任何意义,因为线程共享内存和其他资源,因此“不知从何而来”的新线程根本不知道如何处理它所获得的内容;它会破坏正在运行的应用程序。

  • 尽管如此,一旦新流程开始,它就可以接触现有实例。Chrome 和 Firefox 都是这么做的 – 它们只是向“主” Firefox 进程发送“嘿,用户想要一个新窗口” IPC 消息,然后立即退出。

  • 至于那个新窗口,通常它没有自己获取一个新线程——大多数情况下,如果一个进程决定打开多个窗口,它们都会在同一个“UI 线程”上运行,因为只有主线程接收窗口消息. 相反,额外的线程用于后台和/或长时间运行的任务。


附注:Linux顶部工具默认显示所有线程(因为 Linux 线程与进程没有区别),这每次都会让人感到困惑。如果您使用 htop,请确保选择“显示自定义线程名称”(如链接的屏幕截图所示)或“隐藏用户空间线程”(以获取传统的仅进程列表)。

例如,这是 Linux Chromium 进程树的一小部分,包括子进程及其线程(主进程未显示在屏幕截图中):

(请注意,尽管线程颜色为绿色,但 htop 中显示的线程不是 绿线

相关内容