Ответ
Нет, количество процессов не равно количеству потоков. Процесс — это экземпляр запущенной программы со своим собственным изолированным адресным пространством и ресурсами. Поток (нить) — это легковесная единица выполнения внутри процесса, которая разделяет его память и ресурсы.
Ключевые отличия:
- Изоляция: Процессы изолированы друг от друга. Потоки внутри одного процесса разделяют память (heap) и файловые дескрипторы.
- Стоимость создания: Создание процесса (fork) — дорогая операция. Создание потока — значительно легче и быстрее.
- Влияние сбоев: Сбой (краш) одного потока приводит к падению всего процесса. Сбой процесса не затрагивает другие процессы.
Пример (Swift / Grand Central Dispatch): Один процесс может содержать множество потоков.
// Это один процесс (приложение).
// DispatchQueue создает и управляет потоками внутри него.
DispatchQueue.global(qos: .background).async {
print("Выполняется в фоновом потоке 1")
}
DispatchQueue.global(qos: .utility).async {
print("Выполняется в фоновом потоке 2")
}
// Итог: 1 процесс, 2+ потока.