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

9.7.2 Вызовы с таймаутом для входов

Вызов timed_entry_call делает вызов входа, который отменяется, если вызов (или повторный запрос с отказом вызова) не выбран до истечения времени. В случаях, когда процедура может быть реализована входом, может быть использован вызов процедуры вместо вызова входа.

Синтаксис

timed_entry_call ::=
select
entry_call_alternative
or
delay_alternative
end select;
entry_call_alternative ::=
procedure_or_entry_call [последовательность_операторов]
procedure_or_entry_call ::=
вызов_процедуры | вызов_входа

Правила легальности

Если для procedure_or_entry_call используется вызов_процедуры, то имя_процедуры или префикс_процедуры вызов_процедуры должны статически обозначать вход, переименованный как процедура, или (вид) примитивной подпрограммы ограниченного интерфейса, первым параметром которой является управляющий параметр (см. 3.9.2).

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

При выполнении timed_entry_call, имя_входа, имя_процедуры или префикс_процедуры и любые фактические параметры оцениваются так же, как для простого вызова входа (см. 9.5.3) или вызова процедуры (см. 6.4). Время истечения (см. 9.6) для вызова определяется путем оценки выражение_задержки delay_alternative. Если вызов является вызовом входа или вызовом процедуры, реализованной входом, то выполняется вызов входа. В противном случае вызов выполняется, как описано в 6.4 для вызова процедуры, за которым следует последовательность_операторов entry_call_alternative; последовательность_операторов delay_alternative игнорируется.
Если вызов помещен в очередь (включая из-за повторного запроса с отказом) и не выбран до истечения времени, предпринимается попытка отменить вызов. Если вызов завершается из-за отмены, выполняется необязательная последовательность_операторов delay_alternative; если вызов входа завершается нормально, выполняется необязательная последовательность_операторов entry_call_alternative.

Примеры

Пример вызова входа с таймаутом:
select
Controller.Request(Medium)(Some_Item);
or
delay 45.0;
-- Контроллер слишком занят, попробуем что-нибудь другое
end select;


Spec-Zone.ru

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