Справочник по Ada 95
9.7.3 Условные вызовы записей
Условный вызов записи инициирует вызов записи, который затем отменяется, если он не выбран немедленно (или если переупорядочивание с отменённым вызовом не выбрано немедленно).
Синтаксис
conditional_entry_call ::=
select
entry_call_alternative
else
sequence_of_statements
end select;
select
entry_call_alternative
else
sequence_of_statements
end select;
Динамические семантики
Выполнение условного вызова записи определяется как эквивалентное выполнению вызова записи с ограничением времени с delay_alternative, указывающей на немедленное истечение времени, и той же sequence_of_statements, что и после ключевого слова else.
ПРИМЕЧАНИЯ
37 Условный вызов записи может временно увеличить атрибут Count записи, даже если условный вызов не выбран.
Примеры
Пример условного вызова записи:
procedure Spin(R : in Resource) is
begin
loop
select
R.Seize;
return;
else
null; -- ожидание с задержкой
end select;
end loop;
end;
begin
loop
select
R.Seize;
return;
else
null; -- ожидание с задержкой
end select;
end loop;
end;