9.7.3 Conditional Entry Calls
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).
The execution of a conditional_entry_call
is defined to be equivalent to the execution of a timed_entry_call
with a delay_alternative
specifying an immediate
expiration time and the same sequence_of_statements
as given after the reserved word else
40 A conditional_entry_call
may briefly increase the Count attribute of the entry, even if the conditional
call is not selected.
Example of a conditional
procedure Spin(R : in Resource) is
null; -- busy waiting
Wording Changes from Ada 83
This clause 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.