Содержание
- 2. 7. Монитор 2002 v.0.2 Монитор (2) monitor Буфер; сonstant ДлинаБуфера = 100; var СамБуфер: array[1..ДлинаБуфера] of
- 3. 7. Монитор 2002 v.0.2 Процедура доступа monitor Буфер; . . . procedure Записать(d: Данное); begin ...
- 4. 7. Монитор 2002 v.0.2 Обеспечивается взаимное исключение доступа к ресурсам, описанным в мониторе (Буфер.Записать(D) и Буфер.Прочитать()-
- 5. 7. Монитор 2002 v.0.2 Механизм синхронизации - сигналы type Сигнал; Операции над сигналами: var S: Сигнал;
- 6. 7. Монитор 2002 v.0.2 Использование сигналов в мониторе var Полон, Пуст: Сигнал; procedure Записать(d: Данное); begin
- 7. 7. Монитор 2002 v.0.2 Использование сигналов в мониторе (2) function Прочитать(): Данное begin if(СчетчикЗаписей = 0)
- 8. 7. Монитор 2002 v.0.2 Поставщик Буфер var Полон, Пуст: Сигнал; procedure Записать function Прочитать Потребитель Записать(D)
- 9. 7. Монитор 2002 v.0.2 Задача «Читатели-Писатели» Информационный фонд П1 П2 ПN Ч1 Ч2 ЧM M Читателей
- 10. 7. Монитор 2002 v.0.2 Схема реализации monitor ЧП; var МожноЧитать, МожноПисать: Сигнал; КтоТоПишет: boolean; Читатели: 0..M;
- 11. 7. Монитор 2002 v.0.2 Начало чтения procedure НачалоЧтения(); begin if(КтоТоПишет)or(check(МожноПисать)>0) then wait(МожноЧитать) endif Читатели:= Читатели +
- 12. 7. Монитор 2002 v.0.2 Конец чтения procedure КонецЧтения(); begin Читатели:= Читатели - 1; if(Читатели = 0)
- 13. 7. Монитор 2002 v.0.2 Начало записи procedure НачалоЗаписи(); begin if(Читатели > 0)or(КтоТоПишет) then wait(МожноПисать) endif; КтоТоПишет:=
- 14. 7. Монитор 2002 v.0.2 Конец записи procedure КонецЗаписи(); begin КтоТоПишет:= false; if(check(МожноЧитать) > 0) then send(МожноЧитать)
- 15. 7. Монитор 2002 v.0.2 Реализация механизма семафоров через монитор monitor Семафор; var Счетчик: 0..1; S: Сигнал;
- 17. Скачать презентацию