Ответ
@ Rudra Lad почти правильный, проблема в том, что, заключив l oop с accept
, все это делается внутри рандеву, что означает, что Task
и вызывающая задача одновременно вовлечены, поэтому вы не пользуетесь преимуществами параллелизма / параллелизма.
with Ada.Text_IO;
use Ada.Text_IO;
procedure ConTasks is
task type SimpleTask (Message: Character; HowMany:Positive) is
entry Start_Running;
end SimpleTask;
task body SimpleTask is
begin
accept Start_Running do
null;
end Start_Running;
for i in 1 .. HowMany loop
delay 0.1;
Ada.Text_IO.Put_Line("Hello from task "&Message);
end loop;
end SimpleTask;
task_a : SimpleTask('A', 5);
task_b : SimpleTask('B', 7);
task_c : SimpleTask('C', 4);
begin
task_a.Start_Running;
task_b.Start_Running;
task_c.Start_Running;
end ConTasks;