Технология программирования для распределенных параллельных систем. Демьянович Ю.К - 16 стр.

UptoLike

3) программист, использующий монитор, не вмешивается и не
отслеживает упомянутое взаимное исключение.
§ 4. Условные переменные
В мониторах используются так называемые условные перемен-
ные.
Условная переменная служит для остановки процесса, вызыва-
ющего монитор, в том случае, когда нормальное выполнение этого
процесса в мониторе невозможно до перехода монитора в нужное
состояние. Условную п ере ме нную используют и для запуска при-
остановленного процесса.
Объявление условной переменной имеет вид:
cond cv;
Таким образом, cond новый тип данных. Значением условной пе-
ременной является очередь приостановленных процессов (очередь
задержки). В начале эта очередь пуста.
Может быть объявлен массив условных переменных:
cond cv[n];
Условные переменные можно объявлять и использовать только
в пределах мониторов.
Процесс не может обращаться непосредственно к условной пе-
ременной; он имее т лишь косвенный доступ к ней. Имеются следу-
ющие команды для работы с условной переменной:
1) процесс запрашивает состояние очереди:
empty(cv);
(возвращается “истина”, если очередь пуста);
2) процесс блокируется на условной переменной
wait(cv);
результате п роце сс ставится в очередь, соответствующую этой
переменной, причем у выз ывающего процесса отбирается исключи-
тельный доступ к монитору);
3) процесс, заблокированный на условной переменной cv, запус-
кается оператором
signal(cv);
(если очередь пуста никакие действия не производятся, иначе
запускается процесс, находящийся в начале очереди).
Итак, процессы wait и signal обеспечивают порядок сигнали-
зации FIFO:
17