52 lines
1.0 KiB
Ada
52 lines
1.0 KiB
Ada
-- { dg-do run }
|
|
|
|
with Text_IO; use Text_IO;
|
|
with TLS1_Pkg; use TLS1_Pkg;
|
|
|
|
procedure TLS1 is
|
|
Result : Integer;
|
|
|
|
task type T is
|
|
entry Change (Inc : Integer);
|
|
entry Sum (Result : out Integer);
|
|
end T;
|
|
|
|
task body T is
|
|
begin
|
|
accept Change (Inc : Integer) do
|
|
for I in My_Array.data'range loop
|
|
My_Array.Data (I).Point := Inc;
|
|
end loop;
|
|
end;
|
|
|
|
accept Sum (Result : out Integer) do
|
|
Result := 0;
|
|
for I in My_Array.data'range loop
|
|
Result := Result + My_Array.Data (I).Point;
|
|
end loop;
|
|
end;
|
|
end T;
|
|
|
|
Gang : array (1..10) of T;
|
|
|
|
begin
|
|
for J in Gang'range loop
|
|
Gang (J).Change (J);
|
|
end loop;
|
|
|
|
-- Verify the contents of each local thread storage.
|
|
|
|
for J in Gang'range loop
|
|
Gang (J).Sum (Result);
|
|
pragma Assert (Result = J * 500);
|
|
end loop;
|
|
|
|
-- Verify that original data is unaffected.
|
|
|
|
for J in My_Array.Data'range loop
|
|
Result := Result + My_Array.Data (J).Point;
|
|
end loop;
|
|
|
|
pragma Assert (Result = 500);
|
|
end TLS1;
|