Spec-Zone.ru › Ada 2012
Справочник Ada 2012

D.5.2 Динамические приоритеты для защищённых объектов

В этом подпункте описывается, как приоритет защищённого объекта может быть изменён или запрошен во время выполнения.

Статическая семантика

Для префикса P, обозначающего защищённый объект, определён следующий атрибут:
P'Priority
Обозначает неалиасный компонент защищённого объекта P. Этот компонент имеет тип System.Any_Priority и его значение равно приоритету P. P'Priority обозначает переменную тогда и только тогда, когда P обозначает переменную. Ссылка на этот атрибут должна появляться только внутри тела P.
Начальное значение этого атрибута — начальное значение приоритета защищённого объекта и может быть изменено присваиванием.

Динамическая семантика

Если используется политика блокировки Ceiling_Locking (см. D.3), то потолочный приоритет защищённого объекта P устанавливается в значение P'Priority в конце каждого защищённого действия объекта P.
Если используется политика блокировки Ceiling_Locking, то для защищённого объекта P с заданным аспектом Attach_Handler или Interrupt_Handler для одного из его процедур, проверяется, что присваиваемое значение P'Priority находится в диапазоне System.Interrupt_Priority. Если проверка не пройдена, генерируется ошибка Program_Error.

Метрики

Реализация должна документировать следующую метрику:
  • Разница во времени выполнения вызовов следующих процедур в защищённом объекте P:
protected P is
procedure Do_Not_Set_Ceiling (Pr : System.Any_Priority);
procedure Set_Ceiling (Pr : System.Any_Priority);
end P;
protected body P is
procedure Do_Not_Set_Ceiling (Pr : System.Any_Priority) is
begin
null;
end;
procedure Set_Ceiling (Pr : System.Any_Priority) is
begin
P'Priority := Pr;
end;
end P;
ПРИМЕЧАНИЯ
31 Так как P'Priority — обычная переменная, значение после присваивания атрибуту немедленно отражает новое значение, даже если его влияние на потолочный приоритет P откладывается до завершения защищённого действия, в котором оно выполняется.


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API