9.7.3 Conditional Entry Calls

From OC Systems Wiki!
Jump to: navigation, search

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).

Syntax

conditional_entry_call ::=
    select
        entry_call_alternative
    else
        sequence_of_statements
    end select;

Dynamic Semantics

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.

Notes

37  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;

Copyright © 1992,1993,1994,1995 Intermetrics, Inc.
Copyright © 2000 The MITRE Corporation, Inc. Ada Reference Manual