2012-03-14 3 views
-3

Я пишу простой клиентский сервер в C. Какие преимущества делают многопроцессорный сервер вместо многопоточного?Многопроцессорный сервер или многопоточный сервер?

+0

После исследования и узнать о процессах и потоках, вам не нужно будет задать этот вопрос. –

ответ

1

На это нельзя ответить на реальность, не зная вашей платформы.

Слухи о том, что запуск новых процессов в Windows чрезвычайно дорог, но запуск новых потоков почти свободен. Поэтому среды Windows предпочитают потоки, если производительность является единственным соображением.

В Linux потоки реализованы в виде немного особых вариантов новых процессов. Они оба свободны. Выбор в зависимости от того, что приведет к лучшему коду в долгосрочной перспективе.

На других платформах потоки могут быть более дорогими или, возможно, не смогут использовать несколько процессоров. На этих платформах выберите процессы.

Конечно, есть не только чистое исполнение. Есть что-то очень приятно о shared-nothing designs - если вы удалите все общие данные из программы, вы резко уменьшите вероятность ошибок в разделах кода, которые одновременно обращаются к этим структурам данных. Кроме того, поскольку процессы не используют временную память, злоумышленник, который компрометирует один процесс, может не иметь возможности управлять другими процессами. (Или, может быть, это будет труднее.) Темы просто позволят злоумышленнику читать все, что захочет.

0

Преимущества изготовления многопроцессном сервера вместо одного многопоточного:

Защищенное пространство памяти каждого процесса предотвращает нежелательное искажение одной памяти процесса от другого.

Недостатки изготовления многопроцессном сервера вместо одного многопоточного:

Защищенное пространство памяти каждого процесса предотвращает желаемый прямой связи между одним и другим процессом.

Посмотрите на ваши требования, сделайте ваш выбор ..

Смежные вопросы