9.7.3 Conditional Entry Calls
{
AI95-00345-01}
[A
conditional_entry_call
issues an entry call that is then cancelled if it is not selected immediately
(or if a requeue-with-abort of the call is not selected immediately).
A procedure call may appear rather than an entry call for cases where
the procedure might be implemented by an entry.]
To be honest: In the case of an entry
call on a protected object, it is OK if the entry is closed at the start
of the corresponding protected action, so long as it opens and the call
is selected before the end of that protected action (due to changes in
the Count attribute).
Syntax
Dynamic Semantics
41 A
conditional_entry_call
may briefly increase the Count attribute of the entry, even if the conditional
call is not selected.
Examples
Example of a conditional
entry call:
procedure Spin(R : in Resource) is
begin
loop
select
R.Seize;
return;
else
null; -- busy waiting
end select;
end loop;
end;
Wording Changes from Ada 83
{
AI05-0299-1}
This subclause comes after the one for Timed Entry Calls, so we can define
conditional entry calls in terms of timed entry calls. We do that so
that an "expiration time" is defined for both, thereby simplifying
the definition of what happens on a requeue-with-abort.
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe