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

D.7 Ограничения по задачам

Этот пункт определяет ограничения, которые могут быть использованы с помощью директивы Restrictions (см. 13.12), чтобы облегчить создание высокоэффективных систем выполнения задач.

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

Следующие restriction_идентификаторы определены языком:
No_Task_Hierarchy
Все задачи (кроме задач среды) напрямую зависят от задачи среды раздела.
No_Nested_Finalization
Объекты с управляемыми, защищенными или задачными частями и типами доступа, которые обозначают такие объекты, должны быть объявлены только на уровне библиотеки.
No_Abort_Statements
Нет операторов abort_statement, и нет вызовов Task_Identification.Abort_Task.
No_Terminate_Alternatives
Нет операторов selective_accept с terminate_alternative.
No_Task_Allocators
Нет аллокаторов для типов задач или типов, содержащих задачные подкомпоненты.
No_Implicit_Heap_Allocations
Нет операций, которые неявно требуют выделения памяти в куче от реализации. Операции, которые неявно требуют выделения памяти в куче, определяются реализацией.
No_Dynamic_Priorities
Нет семантических зависимостей от пакета Dynamic_Priorities.
No_Asynchronous_Control
Нет семантических зависимостей от пакета Asynchronous_Task_Control.
Следующие restriction_parameter_идентификаторы определены языком:
Max_Select_Alternatives
Указывает максимальное количество альтернатив в selective_accept.
Max_Task_Entries
Указывает максимальное количество входов на задачу. Границы каждой семейства входов задачи должны быть статическими или быть определены дискриминантой подтипа, соответствующая граница которого является статической. Значение ноль указывает, что переходы на взаимосвязь невозможны.
Max_Protected_Entries
Указывает максимальное количество входов на защищенный тип. Границы каждой семейства входов защищенного блока должны быть статическими или быть определены дискриминантой подтипа, соответствующая граница которого является статической.

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

Этот абзац был удален.
Следующие restriction_parameter_идентификаторы определены языком:
Max_Storage_At_Blocking
Указывает максимальную часть (в элементах памяти) размера памяти Storage_Size задачи, которая может быть сохранена заблокированной задачей. Если реализация выбирает обнаруживать нарушение этого ограничения, Storage_Error должно быть поднято; в противном случае поведение определяется реализацией.
Max_Asynchronous_Select_Nesting
Указывает максимальный динамический уровень вложенности asynchronous_selectов. Значение ноль предотвращает использование любого asynchronous_select, и если программа содержит asynchronous_select, это является незаконным. Если реализация выбирает обнаруживать нарушение этого ограничения для значений, отличных от нуля, Storage_Error должно быть поднято; в противном случае поведение определяется реализацией.
Max_Tasks
Указывает максимальное количество созданий задач, которые могут быть выполнены за время существования раздела, не считая создания задачи среды. Значение ноль предотвращает создание любой задачи, и если программа содержит создание задачи, это является незаконным. Если реализация выбирает обнаруживать нарушение этого ограничения, Storage_Error должно быть поднято; в противном случае поведение определяется реализацией.
Определяется реализацией, приводит ли использование директивы Restrictions к уменьшению размера исполняемой программы, потребностям памяти или времени выполнения. При возможности реализация должна предоставить количественные описания таких эффектов для каждого ограничения.

Рекомендации для реализации

При возможности реализация должна использовать указанные ограничения для создания более эффективной реализации.
ПРИМЕЧАНИЯ
29 Вышеупомянутые Storage_Checks могут быть подавлены с помощью pragma Suppress.


Spec-Zone.ru

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