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

UptoLike

Как было сказано, мониторы являются механизмами более вы-
сокого уровня, чем семафоры, хотя те и другие можно использовать
для решения одних и тех же задач.
Рис. 2. Работа монитора
В качестве примера приведем реализацию семафора с помощью
монитора.
monitor Semaphore {
int s=0; # s больше или равно нуля
cond pos; # получает сигнал при s больше нуля
procedure Psem(); {
while (s==0) wait(pos);
s=s-1;
}
procedure Vsem(); {
s=s+1;
signal(pos); # запуск самого "старого" процесса
}
}
Здесь s целочисленная переменная, представляющая значение
семафора.
Если s=0, то вызов процедуры Psem приводит к приостановке
вызвавшего процесса на условной переменной pos . е. процесс
19