Создание нового потока должно быть быстрее, чем нового процесса.
Процесс - это тяжеловесная структура системы.Он имеет собственное пространство виртуальной памяти, владеет всеми дескрипторами (мьютексами, семафорами, открытыми файлами) и имеет защиту от других процессов.Межпроцессное взаимодействие должно проходить через ОС.
Поток является «дочерним» для процесса.Поток - это просто контекст выполнения (регистры, стек и локальное состояние потока), который может выполняться на другом аппаратном ядре или планироваться на том же ядре, что и другие потоки в процессе.Несколько потоков совместно используют ресурсы одного процесса, включая адресное пространство и дескрипторы ОС, которыми владеет процесс.
Существуют структуры даже быстрее, чем динамически создаваемые потоки, для достижения многозадачности во время выполнения программ.
Некоторые системы или библиотеки кодов поддерживают пулы потоков (легкие потоки).В этом случае вы сообщаете системе, сколько потоков вы хотите запустить, и она создает их заранее.Затем вместо создания и уничтожения потоков (что все еще относительно медленный процесс) вы можете выделять и освобождать потоки из этого пула.
Работа с заданиями - это еще одна аналогичная многоядерная структура с меньшим весом, в которой у вас есть несколько потоков с заданием.очереди задач для выполнения.Они запускают задачи в своих очередях и затем спят, когда очереди пусты.
Как для пулов потоков, так и для задач, нет необходимости в затратах на запуск / остановку потоков, кроме как при создании и уничтожении глобальногобассейны и очереди.