Составители:
Рубрика:
Как было сказано, мониторы являются механизмами более вы-
сокого уровня, чем семафоры, хотя те и другие можно использовать
для решения одних и тех же задач.
Рис. 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
Страницы
- « первая
- ‹ предыдущая
- …
- 16
- 17
- 18
- 19
- 20
- …
- следующая ›
- последняя »