1

Я заметил, что Chrome (теперь известный), создает множество экземпляров в диспетчере задач. Это много потоков и один процесс? Или это несколько процессов. т.е. диспетчер задач показывает потоки, или это показывает процессы?

Предположим, я захожу в orb/start и запускаю cmd, затем снова иду туда и запускаю другой cmd. Это два отдельных процесса, а не один процесс с двумя потоками?

Теперь предположим, что я запускаю cmd, а затем запускаю другой cmd. Это один процесс двух потоков? Или это два процесса?

1 ответ1

3

Windows "Диспетчер задач" показывает только процессы. (В противном случае вы увидите много дубликатов для всего, поскольку почти все приложения Windows являются многопоточными, включая Chrome.) Чтобы увидеть потоки процесса, используйте Process Explorer или Process Hacker ; у обоих есть вкладка "Потоки" в диалоге свойств процесса.

Когда вы запускаете что-либо через Run… или из командной строки, оно всегда запускается как новый процесс. Не имеет смысла, чтобы это был новый поток в существующем процессе, поскольку потоки совместно используют память и другие ресурсы, поэтому новый поток, созданный "из ниоткуда", просто не будет знать, что делать с тем, что он получил; это растопчет все запущенное приложение.

  • Тем не менее, после запуска нового процесса он может связаться с существующим экземпляром. Это то, что делают и Chrome, и Firefox - они просто отправляют IPC-сообщение «эй, пользователь хочет новое окно» "основному" процессу Firefox и сразу же завершают работу.

  • Что касается этого нового окна, обычно оно не получает новый поток самостоятельно - в большинстве случаев, если один процесс решает открыть несколько окон, все они работают в одном и том же "потоке пользовательского интерфейса", поскольку только основной поток получает оконные сообщения. Вместо этого дополнительные потоки используются для фоновых и / или долгосрочных задач.


В качестве примечания, то Linux HTOP инструмент не отображает все темы по умолчанию (так как потоки Linux не отличаются от процессов), и это сбивает с толку людей каждый раз. Если вы используете htop, обязательно выберите "Показать пользовательские имена потоков" (как на связанном скриншоте) или "Скрыть потоки пользовательского пространства" (чтобы получить традиционный список только для процессов).

Например, вот небольшая часть дерева процессов Linux Chromium, включая подпроцессы и их потоки (основной процесс не уместился на скриншоте):

(Обратите внимание, что, несмотря на свою зеленую окраску, нити, показанные в htop , не являются зелеными.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .