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

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;
function Environment_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;
function Activation_Is_Complete (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 возвращает значение, идентифицирующее вызывающую задачу.
Функция Environment_Task возвращает значение, идентифицирующее задачу окружения.
Эффект Abort_Task такой же, как у инструкции abort_statement для задачи, идентифицируемой T. Кроме того, если T идентифицирует задачу окружения, весь раздел прерывается. См. E.1.
Функции Is_Terminated и Is_Callable возвращают значение соответствующего атрибута задачи, идентифицируемой T.
Функция Activation_Is_Complete возвращает True, если задача, идентифицируемая T, завершила свою активацию (успешно или нет). В противном случае возвращает False. Если T идентифицирует задачу окружения, Activation_Is_Complete возвращает True после завершения обработки library_itemов раздела.
Для префикса T типа задачи (после любого неявного разыменования) определён следующий атрибут:
T'Identity
Возвращает значение типа Task_Id, идентифицирующее задачу, обозначенную T.
Для префикса E, обозначающего entry_declaration, определён следующий атрибут:
E'Caller
Возвращает значение типа Task_Id, идентифицирующее задачу, вызов которой сейчас обрабатывается. Использование этого атрибута разрешено только внутри accept_statement или entry_body после entry_barrier, соответствующего entry_declaration с обозначением E.
Ошибка Program_Error возникает, если значение Null_Task_Id передаётся в качестве параметра функциям Abort_Task, Is_Terminated и Is_Callable.
Abort_Task — потенциально блокирующая операция (см. 9.5.1).

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

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

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

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

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

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


Spec-Zone.ru

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