процесс и темы - PullRequest
       4

процесс и темы

1 голос
/ 25 августа 2009

как процесс и производительность потоков будут варьироваться в зависимости от timslice. (Сколько приблизительно времени потребуется для выполнения). В какой ситуации мы будем использовать потоки вместо процесса.

1 Ответ

9 голосов
/ 25 августа 2009

Я бы хотел перефразировать ваш вопрос следующим образом: В каких случаях одно приложение должно иметь несколько потоков, а в каких случаях оно должно использовать несколько процессов?

В этом вопросе временные интервалы вообще не имеют значения: операционные системы сегодня только планируют потоки и рассматривают «простой» процесс как имеющий один поток.

Что влияет на производительность, так это накладные расходы на создание: создание процесса обычно обходится дороже, чем создание потока. Многопроцессорные приложения избегают таких затрат благодаря использованию пулов, то есть они создают новые процессы очень редко, но повторно используют их, когда выполняют какую-то задачу. Поскольку создание потоков все еще дорого, люди часто делают то же самое с потоками.

Что также важно, так это коммуникационные издержки: в потоках вы можете легко делиться памятью; в процессах вы обычно копируете вещи (например, используя канал). Существуют также способы совместного использования памяти между процессами, но их довольно сложно использовать.

Так что в общем случае потоки должны быть быстрее, чем процессы. Почему люди все еще используют процессы? Потому что они являются более простой моделью программирования. Из-за разделяемой памяти в потоках очень легко совершать ошибки и иметь библиотеки / API, которые не являются потоко-безопасными . Недостаток безопасности потоков можно обойти, используя процессы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...