我尝试调用一个任务 100 次,但它不起作用,看来我应该创建 100 个条目来做到这一点。那么您能给一些建议吗?
我现在正在学习如何使用 Ada 任务:-)
with Ada.Text_IO ; use Ada.Text_IO;
procedure Main is
task type test1 is
entry start;
end test1;
task body test1 is
begin
accept start;
Put_Line("Haha");
end test1;
t1 : test1;
N : Integer := 10;
begin
while N /= 0 loop
t1.start;
N := N - 1;
end loop;
end Main;
E:\Ada Code\Simple\obj\main.exe 哈哈
引发了 TASKING_ERROR [2019-06-03 17:55:17] 进程退出,状态为1,运行时间:01.00s
最佳答案
您的问题是任务将在接受第一个集合点后运行完成。您可以通过在任务主体中添加循环来避免这种情况:
task body test1 is
begin
loop
accept start;
Put_Line("Haha");
end loop;
end test1;
(事实上,大多数任务都会有这样的循环)
该任务现在有一个无限循环,因此下一步是确保您的任务在主程序完成时终止。在这种情况下,您可以通过选择性接受来做到这一点:
task body test1 is
begin
loop
select
accept start;
or
terminate;
end select;
Put_Line("Haha");
end loop;
end test1;
关于loops - 如何在Ada中多次调用一个任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56425008/