7. Programmeinheiten
 
zurück
7.14 Geschützte Einheiten und geschützte Eingänge


Eine geschützte Einheit stellt Datenbereiche ("shared data") zur Verfügung, die von verschiedenen Prozessen (Parallele Prozesse) nur so gemeinsam genutzt werden, daß keine zwei Prozesse zur gleichen Zeit auf die geschützte Einheit zugreifen können. Alle Zugriffe werden sequentialisiert.

Auf die Datenbereiche kann mit geschützten Operationen (protected_operation_item <BNF>) zugegriffen werden. Geschützte Operationen sind entweder geschützte Unterprogramme oder geschützte Eingänge.

Laut Referenzhandbuch wird sowohl die geschützte Einheit als auch ihr möglicher Bestandteil, der geschützte Eingang, als Programmeinheit verstanden.

Wie alle anderen Programmeinheiten bestehen eine geschützte Einheit und ein geschützter Eingang aus Spezifikation und Rumpf

Das folgende Beispiel zeigt die geschützte Einheit "Objekt", die über zwei geschützte Operationen verfügt. Es gibt den geschützten Eingang "Lesen" und das geschützte Unterprogramm "Schreiben". Für die geschützte Einheit liegt die Deklaration eines geschützten Typs vor, die die Spezifikationen der geschützten Operationen enthält. Der Rumpf der geschützten Einheit enthält die Rümpfe der geschützten Operationen.

-- Spezifikation der geschuetzten Einheit
protected Objekt is
   -- geschuetzter Eingang - Spezifikation
   entry Lesen (X : out integer);
   -- geschuetztes Unterprogramm
   procedure Schreiben (X : in integer);
private
   Variable : integer;
   Lesen_sinnvoll : boolean := false;
end Objekt;

-- Rumpf
protected body Objekt is
   -- geschuetzter Eingang
   entry Lesen (X : out integer) when Lesen_sinnvoll is
   begin
      X := Variable;
   end Lesen;
   -- geschuetztes Unterprogramm
   procedure Schreiben (X : in integer) is
   begin
      Lesen_sinnvoll := true;
      Variable := X;
   end Schreiben;
end Objekt;

Eine geschützte Einheit wird dazu verwendet, geschützte Objekte anzulegen. Ein geschütztes Objekt kann auf zweierlei Arten erzeugt werden.

Ein geschütztes Objekt ist entweder

• ein in einer geschützten Einheit explizit deklariertes geschütztes Objekt

protected Objekt is
...
end Objekt;


• oder die Instanz eines geschützten Typs

-- ein geschützter Typ
protected type Objekt_Typ is
...
end Objekt;
...
-- Erzeugen eines Objekts eines geschützten Typs
Objekt : Objekt_Typ;



 
zurück
 Index   Ada Tour - Dokumentation  
© 2003 Förderverein Ada Deutschland e.V.