Что такое потоки процессов?
Возможно, вы слышали термины однопоточный и многопоточный. Потоки — это единицы выполнения внутри процесса, и их часто называют «легковесными процессами». В то время как процессы работают со своими собственными изолированными системными ресурсами, потоки в одном и том же процессе могут совместно использовать эти ресурсы, например, память. Такая модель совместного использования ресурсов делает связь между потоками намного быстрее и эффективнее, чем связь между отдельными процессами.
Однопоточный против многопоточного
Каждый процесс имеет как минимум один поток. Процесс, имеющий только один поток, называется однопоточным, а процесс с более чем одним потоком — многопоточным.
Например, когда вы используете современный текстовый редактор, он может работать как один процесс. Однако внутри этого процесса один поток может управлять вводом с клавиатуры, в то время как другой поток работает в фоновом режиме для проверки орфографии или автосохранения. Такое параллельное выполнение делает приложение более отзывчивым. Использование нескольких потоков часто более эффективно, чем запуск нескольких процессов для связанных задач.
Как отобразить потоки с помощью ps
Чтобы проверить запущенные процессы и их потоки, вы можете использовать команду ps. Хотя у ps много опций, распространенный способ отобразить потоки — использовать флаг m.
pete@icebox:~$ ps m
PID TTY STAT TIME COMMAND
2207 pts/2 - 0:01 bash
- - Ss 0:01 -
5252 pts/2 - 0:00 ps m
- - R+ 0:00 -
Интерпретация вывода
В приведенном выше выводе строки с PID (идентификатор процесса) представляют основной процесс. Строки непосредственно под ними, в которых вместо PID стоит прочерк (-), представляют потоки, принадлежащие этому процессу. В этом примере и процессы bash, и ps m являются однопоточными, поскольку для каждого указан только один основной поток.