Es gibt das folgende sprachdefinierte Paket:
Mit den Operationen dieses Pakets ist es möglich, jeden Task eindeutig zu identifizieren. Darüberhinaus existieren zwei Attribute, die sehr nützlich sind:
T'IDENTITY | gibt die Task_ID des Tasks T zurück. |
E'CALLER | gibt die Task_ID des Tasks zurück, dessen Entry-Call gerade behandelt wird; nur erlaubt innerhalb einer Accept-Anweisung des Entry's E oder eines Entry-Body's eines Entry's E eines geschützten Objektes. |
Wenn eine Instanz des generischen Pakets Ada.Task_Attributes in einer Partition geschaffen wird, so wird jeder Task, der in dieser Partition kreiert wird, implizit mit einem Objekt des generischen Parameters Attribute versehen. Dieses Objekt fungiert als benutzerdefiniertes Attribut des Tasks. Der Benutzer kann dann damit anstellen, was immer er will.
with Ada.Task_Identification; use Ada.Task_Identification;
generic
type Attribute is private;
Initial_Value : in Attribute;
package Ada.Task_Attributes is
type Attribute_Handle is access all Attribute;
function Value(T : Task_ID := Current_Task)
return Attribute;
function Reference(T : Task_ID := Current_Task)
return Attribute_Handle;
procedure Set_Value(
Val : in Attribute;
T : in Task_ID := Current_Task);
procedure Reinitialize(T : in Task_ID := Current_Task);
end Ada.Task_Attributes;