Contents   Index   Search   Previous   Next


D.9 Delay Accuracy

1
   [This clause specifies performance requirements for the delay_statement. The rules apply both to delay_relative_statement and to delay_until_statement. Similarly, they apply equally to a simple delay_statement and to one which appears in a delay_alternative.]

Dynamic Semantics

2
   The effect of the delay_statement for Real_Time.Time is defined in terms of Real_Time.Clock:
3
4
5
   {potentially blocking operation (delay_statement) [partial]} {blocking, potentially (delay_statement) [partial]} A simple delay_statement with a negative or zero value for the expiration time does not cause the calling task to be blocked; it is nevertheless a potentially blocking operation (see 9.5.1).
6
   When a delay_statement appears in a delay_alternative of a timed_entry_call the selection of the entry call is attempted, regardless of the specified expiration time. When a delay_statement appears in a selective_accept_alternative, and a call is queued on one of the open entries, the selection of that entry call proceeds, regardless of the value of the delay expression.
6.a
Ramification: The effect of these requirements is that one has to always attempt a rendezvous, regardless of the value of the delay expression. This can be tested by issuing a timed_entry_call with an expiration time of zero, to an open entry.

Documentation Requirements

7
   The implementation shall document the minimum value of the delay expression of a delay_relative_statement that causes the task to actually be blocked.
8
   The implementation shall document the minimum difference between the value of the delay expression of a delay_until_statement and the value of Real_Time.Clock, that causes the task to actually be blocked.
8.a
Implementation defined: Implementation-defined aspects of delay_statements.

Metrics

9
   The implementation shall document the following metrics:
10
11
12
13
NOTES
14
32  The execution time of a delay_statement that does not cause the task to be blocked (e.g. ``delay 0.0;'' ) is of interest in situations where delays are used to achieve voluntary round-robin task dispatching among equal-priority tasks.

Wording Changes from Ada 83

14.a
The rules regarding a timed_entry_call with a very small positive Duration value, have been tightened to always require the check whether the rendezvous is immediately possible.

Contents   Index   Search   Previous   Next   Legal