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

UptoLike

send reply[clientID](unitID);
} else # запомнить запрос:
insert(pending, clientID);
} else { # kind==RELEASE, то освобождение ресурса
if empty(pending){ # очередь пуста
# возвратить unitID в множество элементов:
avail++; insert(units, unitID);
} else {
# удовлетворить unitID для ожидающего клиента:
remove(pending, clientID);
send reply[clientID](unitID);
}
}
}
}
process Client[i=0 to n-1]{
int unitID;
send request(i, ACQUIRE, 0); # "вызов" запросов
receive reply[i](unitID);
# использовать ресурс unitID, затем освободить его
send request(i, RELEASE, unitID);
. . .
}
Замечание. Клиенты остаются без изменений.
Здесь рассмотрен частный случай имитации монитора с помо-
щью процесса-сервера; в этом мониторе программирование прово-
дится с помощью метода передачи условия.
Для моделирования мониторов, содержащих операторы wait
или/и операторы signal, приходится сохранять ожидающий запрос
и проверять очередь ожидающих запр осов.
Между программами с мониторами и с передачей сообщений
имеется некоторое соответствие.
38