CVS difference for ais/ai-00165.txt

Differences between 1.7 and version 1.8
Log of other versions for file ais/ai-00165.txt

--- ais/ai-00165.txt	2000/04/14 01:45:08	1.7
+++ ais/ai-00165.txt	2000/06/20 04:22:43	1.8
@@ -1,4 +1,4 @@
-!standard C.7.2    (13)                               00-04-11  AI95-00165/07
+!standard C.7.2    (13)                               00-06-19  AI95-00165/08
 !standard C.7.2    (15)
 !standard C.7.2    (16)
 !class binding interpretation 96-10-04
@@ -10,7 +10,7 @@
 !priority Medium
 !difficulty Medium
 !qualifier Clarification
-!subject Recursive use of task attributes isn't considered
+!subject Recursive use of task attributes
 
 !summary
 
@@ -52,12 +52,12 @@
     with Ada.Task_Attributes;
     package An_Attr is
       type Attr is new Controlled with record
-	  N : Integer;
-	end record;
+          N : Integer;
+        end record;
       procedure Adjust(X : in out Attr);
 
       package Ops is new Ada.Task_Attributes(Attr,
-	    Initial_Value => (Controlled with 0));
+            Initial_Value => (Controlled with 0));
 
     end An_Attr;
 
@@ -67,12 +67,12 @@
 
       procedure Adjust(X : in out Attr) is
       begin
-	Put_Line((1..2*Depth => ' ') & "Adjust called");
-	Depth := Depth + 1;
-	if Depth <= 3 then
-	  Put_Line((1..2*Depth => ' ') & "calling Set_Value...");
-	  Ops.Set_Value((Controlled with Depth));
-	end if;
+        Put_Line((1..2*Depth => ' ') & "Adjust called");
+        Depth := Depth + 1;
+        if Depth <= 3 then
+          Put_Line((1..2*Depth => ' ') & "calling Set_Value...");
+          Ops.Set_Value((Controlled with Depth));
+        end if;
       end Adjust;
 
     end An_Attr;
@@ -107,7 +107,7 @@
 nested accesses as expected. Concurrent accesses via Attribute_Handles
 are deemed erroneous.
 
-The summary of the AI specifies these semantics in more detail.
+The summary of this issue specifies these semantics in more detail.
 
 !wording
 
@@ -124,14 +124,14 @@
 
 The atomicity of the operations will require some locking mechanism to
 prevent concurrent accesses to the same task attribute of a given
-task. RM C.7.2(16) seems to imply that an individual lock is provided
+task. C.7.2(16) seems to imply that an individual lock is provided
 for each attribute of each task. However, obtaining a lock can be a
 rather expensive operation, particularly for implementations that
-utilize the locking primitives of an underlying OS.
+utilize the locking primitives of an underlying operating system.
 
 If the attribute does not involve controlled types with user-defined
 Adjust and Finalization routines, then a single run-time lock suffices
-to achieve the semantics of RM C.7.2(16).
+to achieve the semantics of C.7.2(16).
 
 If the attribute is of a controlled type or has components of a controlled
 type, then the implicitly invoked user-defined Adjust or Finalize routines
@@ -145,10 +145,13 @@
 It seems unwise to require all implementations to provide a potentially
 expensive very fine-grained locking on attributes merely to guard against
 the fairly rare situation, in which
+
    - a controlled type is chosen for a task attribute, and
+
    - the Adjust or Finalize operation of the controlled type
      calls on operations of this package in turn to read or modify
      task attributes.
+
 Also, the case of a recursive access to the same attribute of the same task
 will deadlock anyway.
 

Questions? Ask the ACAA Technical Agent