Справочник Ada 2012
9.7.3 Вызовы вхождений с условием
Вызов conditional_entry_call выполняет вызов вхождения, который затем отменяется, если он не выбран сразу (или если немедленно не выбран повторный вызов с отбрасыванием). В случаях, когда процедура может быть реализована вхождением, может появиться вызов процедуры вместо вызова вхождения.
Синтаксис
conditional_entry_call ::=
select
entry_call_alternative
else
последовательность_операторов
end select;
select
entry_call_alternative
else
последовательность_операторов
end select;
Динамическая семантика
Выполнение conditional_entry_call эквивалентно выполнению timed_entry_call с delay_alternative, задающей время немедленного истечения, и той же последовательностью_операторов, что указана после ключевого слова else.
ПРИМЕЧАНИЯ
41 Вызов conditional_entry_call может временно увеличить атрибут 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;