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

C.7.1 Пакет Task_Identification

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

Существует следующий пакет библиотеки, определяемый языком:
package Ada.Task_Identification is
pragma Preelaborate(Task_Identification);
type Task_Id is private;
pragma Preelaborable_Initialization (Task_Id);
Null_Task_Id : constant Task_Id;
function "=" (Left, Right : Task_Id) return Boolean;
function Image (T : Task_Id) return String;
function Current_Task return Task_Id;
procedure Abort_Task (T : in Task_Id);
function Is_Terminated(T : Task_Id) return Boolean;
function Is_Callable (T : Task_Id) return Boolean;
private
... -- не определено языком
end Ada.Task_Identification;

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

Значение типа Task_Id идентифицирует существующую задачу. Константа Null_Task_Id не идентифицирует ни одну задачу. Каждый объект типа Task_Id инициализируется по умолчанию значением Null_Task_Id.
Функция "=" возвращает True тогда и только тогда, когда Left и Right идентифицируют одну и ту же задачу или оба имеют значение Null_Task_Id.
Функция Image возвращает строку, определяемую реализацией, которая идентифицирует T. Если T равно Null_Task_Id, Image возвращает пустую строку.
Функция Current_Task возвращает значение, идентифицирующее вызывающую задачу.
Эффект Abort_Task такой же, как и у оператора abort_statement для задачи, идентифицируемой T. Кроме того, если T идентифицирует средовую задачу, вся секция прерывается, см. E.1.
Функции Is_Terminated и Is_Callable возвращают значение соответствующего атрибута задачи, идентифицируемой T.
Для префикса T, являющегося типом задачи (после любого неявного разыменования), определен следующий атрибут:
T'Identity
Возвращает значение типа Task_Id, идентифицирующее задачу, обозначаемую T.
Для префикса E, обозначающего entry_declaration, определен следующий атрибут:
E'Caller
Возвращает значение типа Task_Id, идентифицирующее задачу, вызов которой в данный момент обслуживается. Использование этого атрибута разрешено только внутри entry_body или accept_statement, соответствующих entry_declaration, обозначаемому E.
Program_Error генерируется, если значение Null_Task_Id передается в качестве параметра к Abort_Task, Is_Terminated и Is_Callable.
Abort_Task — потенциально блокирующая операция (см. 9.5.1).

Ограниченные (временные) ошибки

Вызов функции Current_Task из тела входа, обработчика прерывания или завершения атрибута задачи является ограниченной ошибкой. Генерируется Program_Error или возвращается определяемое реализацией значение типа Task_Id.

Ошибка выполнения

Если значение Task_Id передается в качестве параметра к любой операции, объявленной в этом пакете (или любом определенном языком подпакете), а соответствующий объект задачи больше не существует, выполнение программы становится ошибочным.

Требования к документации

Реализация должна задокументировать эффект вызова Current_Task из тела входа или обработчика прерывания.
ПРИМЕЧАНИЯ
10 Этот пакет предназначен для использования при написании пакетов планирования задач и построении серверных задач. Current_Task может использоваться совместно с другими операциями, требующими задачи в качестве аргумента, такими как Set_Priority (см. D.5).
11 Функция Current_Task и атрибут Caller могут возвращать значение Task_Id, идентифицирующее средовую задачу.


Spec-Zone.ru

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