Я новичок в Ada.
Я объявил новый тип задачи и сохранил три из них в пуле.Затем я хочу запустить каждую задачу в цикле.
Ожидаемое поведение - все они выполняются одновременно.
Реальность такова, что они выполняются один за другим.другой.Таким образом, задачи (2) выполняются не раньше, чем задачи (1) завершаются.Фактически, задание (2) никогда не будет выполнено, поскольку оно заканчивается из-за ограничений выбора.
Мой код:
with Counter;
procedure Main is
task type CounterTask is
entry Execute(t:in Counter.Timeout; d:in Duration);
end CounterTask;
task body CounterTask is
begin MyLoop: loop
select
accept Execute(t:in Counter.Timeout;d:in Duration) do
Counter.Run(t, d);
end Execute;
or
delay 2.0;
exit;
end select;
end loop MyLoop;
end CounterTask;
tasks:Array(1..3) of CounterTask;
begin
for i in Integer range 1..3 loop
tasks(i).Execute(Counter.Timeout(10*i), Duration(0.5 * i));
end loop;
end Main;
Любые подсказки или идеи будут приветствоваться!