Основные отличия команд forking и threads в Linux:
- Forking создаёт отдельный процесс, который имеет тот же код выполнения, что и родительский процесс. 5 Система создаёт копию всех сегментов родительского процесса, поэтому такие процессы называют «тяжёлыми». 2
- Создание потоков не дублирует сегменты. 2 Создаётся контекст, который хранит состояние прогресса вновь созданной нити: счётчик программ, указатель стека и т. д.. 2 Это даёт нити доступ к данным родительского процесса, так как они не дублируются, при этом нить может выполняться одновременно с основной нитью. 2
Таким образом, форкинг создаёт тяжёлые процессы, а создание потоков требует меньше ресурсов, поскольку система не инициализирует новую систему виртуальной памяти и среду для этого процесса. 12