Содержание
- 2. 10. Монитор Хоара 2015 v.01 Процедура доступа monitor Буфер; var СамБуфер: array[1..ДлинаБуфера] of Данное; var СчетчикЗаписей:
- 3. 10. Монитор Хоара 2015 v.01 Механизм сигналов Желательна возможность «нотификации» изменений состояния ресурсов монитора. Пример: «Поставщик
- 4. 10. Монитор Хоара 2015 v.01 Решение 2 (совсем плохое) Процесс «анализирует» возможность доступа и «засыпает» на
- 5. 10. Монитор Хоара 2015 v.01 Сигналы - определение Операции над сигналами: Сигнал S = new Сигнал();
- 6. 10. Монитор Хоара 2015 v.01 var Полон, Пуст: Сигнал; procedure Записать(d: Данное); begin if(СчетчикЗаписей => ДлинаБуфера)
- 7. 10. Монитор Хоара 2015 v.01 Еще одна «тонкость» ... if(СчетчикЗаписей == 0) then wait(Пуст) endif Но
- 8. 10. Монитор Хоара 2015 v.01 class Buffer { int[] buf; public synchronized void put (int s)
- 9. 10. Монитор Хоара 2015 v.01 Пример - задача «Читатели-Писатели» Информационный фонд П1 П2 ПN Ч1 Ч2
- 10. 10. Монитор Хоара 2015 v.01 Схема реализации monitor ЧП; var МожноЧитать, МожноПисать: Сигнал; КтоТоПишет: boolean; Читатели:
- 11. 10. Монитор Хоара 2015 v.01 Начало и окончание чтения procedure НачалоЧтения(); begin while (КтоТоПишет)or(check(МожноПисать)>0) wait(МожноЧитать); Читатели:=
- 12. 10. Монитор Хоара 2015 v.01 Начало и окончание записи procedure НачалоЗаписи(); begin while(Читатели > 0)or(КтоТоПишет) wait(МожноПисать);
- 14. Скачать презентацию