Типовые задачи синхронизации. Производитель-потребитель

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

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

Типовые задачи синхронизации. Читатели и писатели

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: