синхронизация потоков против синхронизации процессов - PullRequest
1 голос
/ 07 января 2011
  1. можем ли мы использовать одни и те же механизмы синхронизации как для синхронизации потоков, так и для синхронизации процессов
  2. Какие механизмы синхронизации доступны только в процессе

Ответы [ 4 ]

3 голосов
/ 07 января 2011

семафоры обычно используются для многопроцессорной синхронизации с точки зрения доступа к общей памяти и т. Д.

критические секции, мьютексы и условия являются наиболее распространенными инструментами для синхронизации потоков внутри процесса.

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

2 голосов
/ 07 января 2011

Есть несколько объектов синхронизации.У них разные цели и масштабы.Различные языки и операционная система реализуют их по-разному.Например, в Windows вы можете использовать мониторы для синхронизации потоков внутри процессов или мьютекс для синхронизации процессов.Есть семафоры, события, барьеры ... Все зависит от случая..NET предоставляет так называемые тонкие версии, которые имеют улучшенную производительность, но предназначены только для синхронизации в процессе.

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

1 голос
/ 07 января 2011

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

Ref .

Что касается конкретных конструкций синхронизации, то этобудет зависеть от ОС / Среды / языка

0 голосов
/ 07 января 2011

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

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