Мониторы в синхронизации процессов

Опубликовано: 28 Декабря, 2021

Монитор - это один из способов добиться синхронизации процессов. Монитор поддерживается языками программирования для достижения взаимного исключения между процессами. Например, синхронизированные методы Java. Java предоставляет конструкции wait () и notify ().

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

Синтаксис:

Переменные состояния:
С переменными состояния монитора выполняются две разные операции.

Ждать.
сигнал.

скажем, у нас есть 2 условные переменные
условие x, y; // Объявление переменной

Подождите операцию
x.wait (): процесс, выполняющий операцию ожидания для любой переменной условия, приостанавливается. Приостановленные процессы помещаются в очередь блоков этой переменной условия.

Примечание. Каждая условная переменная имеет свою уникальную очередь блоков.

Сигнальная операция
x.signal (): когда процесс выполняет сигнальную операцию над условной переменной, одному из заблокированных процессов предоставляется шанс.

 Если (очередь блоков x пуста)
  // Игнорировать сигнал
еще
  // Возобновляем процесс из очереди блоков.

Преимущества монитора:
Преимущество мониторов в том, что параллельное программирование становится проще и меньше подвержено ошибкам, чем при использовании таких методов, как семафор.

Недостатки монитора:
Мониторы должны быть реализованы как часть языка программирования. Компилятор должен сгенерировать для них код. Это дает компилятору дополнительную нагрузку, связанную с необходимостью знать, какие средства операционной системы доступны для управления доступом к критическим разделам в параллельных процессах. Некоторые языки, которые действительно поддерживают мониторы, - это Java, C #, Visual Basic, Ada и параллельный Euclid.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.

РЕКОМЕНДУЕМЫЕ СТАТЬИ