with Ada.Text_IO; procedure Uebung is task type Printer is entry Set_Output (Char : in Character); end Printer; Global : Natural := 0; task body Printer is Output_Character : Character; begin accept Set_Output (Char : in Character) do Output_Character := Char; end Set_Output; for I in 1 .. 1_000 loop Ada.Text_IO.Put (Output_Character); -- Global := Global + 1; -- Race Condition end loop; end Printer; begin Ada.Text_IO.Put_Line ("start."); declare T : array (1 .. 3) of Printer; begin T (1).Set_Output ('.'); T (2).Set_Output ('*'); T (3).Set_Output ('+'); end; -- wartet auf alle Tasks Ada.Text_IO.Put_Line ("finished: " & Integer'Image (Global)); end Uebung;