Про разницу между процессом и нитью (потоками)

Создание процесса всегда стоит дороже создания потоков (нитей). Потоки - это одни из компонентов процесса, т.е. процесс может состоять из нескольких выполняемых нитей. Точная «стоимость» памяти, выделения времени зависит от операционной системы, но «стоимость» нити обычно на 10% и даже меньше чем процесса.

Поскольку каждый раз выделение нового процесса означает под собой выделение необходимых ресурсов, необходимых для его выполнения, а нить использует общие данные, которые не требуют перераспределения памяти и ведут себя как общие буферы или ресурсы, то отсюда и объяснение дороговизны создания процессов, а не нитей. Хотя, как и следовало предполагать, всё зависит от задачи.

Один процесс (process) может иметь несколько нитей (потоков, threads), которые используют общие данные и адресное пространство с другими нитями (потоками), принадлежащими этому же процессу, и поэтому работать с этими наборами данных проще. Процессы не разделяют адресное пространство и, при необходимости обмена данными между ними, должны использоваться другие механизмы.

Применительно, например, к программе обработки текстов: она будет являться процессом, а функциональность автоматического сохранения и функций проверки правописания будут выполнять нити(потоки), которые происходят в фоновом режиме, которые используют один и тот же набор данных (Ваш документ).

11.12.2008

Google