Справочник Ada 2005
E.4.1 Предикат Asynchronous
Этот подраздел описывает предикат Asynchronous, который позволяет вызову удаленной подпрограммы возвращаться до завершения выполнения соответствующего тела удаленной подпрограммы.
Синтаксис
Форма предиката pragma Asynchronous следующая:
pragma Asynchronous(local_name);
Правила допустимости
Имя local_name предиката Asynchronous должно обозначать:
- Одну или несколько удаленных процедур; все формальные параметры процедур должны иметь режим in;
- Первый подтип удаленного типа доступа к процедуре; все формальные параметры указанного профиля типа должны иметь режим in;
- Первый подтип удаленного типа доступа к классу.
Статическая семантика
Предикат Asynchronous является предикатом представления. При применении к типу он задаёт аспект типа, связанный с асинхронностью.
Динамическая семантика
Удаленный вызов является асинхронным, если это вызов процедуры или вызов через значение типа доступа к процедуре, к которому применяется предикат Asynchronous. Кроме того, если предикат Asynchronous применяется к удалённому типу доступа к классу, то вызов диспетчеризации процедуры с управляемым операндом, обозначенным значением типа, является асинхронным, если все формальные параметры процедуры имеют режим in.
Требования к реализации
Асинхронные вызовы удалённых процедур должны быть реализованы таким образом, чтобы соответствующее тело выполнялось не более одного раза в результате вызова.