Go to the first, previous, next, last section, table of contents.
-
The primary means for intertask communication is provided by calls on
entries and protected subprograms. Calls on protected subprograms allow
coordinated access to shared data objects. Entry calls allow for
blocking the caller until a given condition is satisfied (namely, that
the corresponding entry is open -- See section 9.5.3 Entry Calls.), and then
communicating data or control information directly with another task or
indirectly via a shared protected object.
Static Semantics
-
Any call on an entry or on a protected subprogram identifies a target
object for the operation, which is either a task (for an entry call) or
a protected object (for an entry call or a protected subprogram call).
The target object is considered an implicit parameter to the operation,
and is determined by the operation name (or prefix) used in the call on
the operation, as follows:
-
If it is a direct_name or expanded name that denotes the declaration (or
body) of the operation, then the target object is implicitly specified
to be the current instance of the task or protected unit immediately
enclosing the operation; such a call is defined to be an internal call;
-
If it is a selected_component that is not an expanded name, then the
target object is explicitly specified to be the task or protected object
denoted by the prefix of the name; such a call is defined to be an
external call;
-
If the name or prefix is a dereference (implicit or explicit) of an
access-to-protected-subprogram value, then the target object is
determined by the prefix of the Access attribute_reference that produced
the access value originally, and the call is defined to be an external
call;
-
If the name or prefix denotes a subprogram_renaming_declaration, then
the target object is as determined by the name of the renamed entity.
-
A corresponding definition of target object applies to a
requeue_statement, See section 9.5.4 Requeue Statements, with a corresponding distinction
between an internal requeue and an external requeue.
Dynamic Semantics
-
Within the body of a protected operation, the current instance,
See section 8.6 The Context of Overload Resolution, of the immediately enclosing protected unit is determined by
the target object specified (implicitly or explicitly) in the call (or
requeue) on the protected operation.
-
Any call on a protected procedure or entry of a target protected object
is defined to be an update to the object, as is a requeue on such an
entry.
- 9.5.1: Protected Subprograms and Protected Actions
- 9.5.2: Entries and Accept Statements
- 9.5.3: Entry Calls
- 9.5.4: Requeue Statements
Go to the first, previous, next, last section, table of contents.