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