如何在Ada中检查任务是否终止

如何在Ada中检查任务是否终止,ada,Ada,我有一个taskA调用taskB 有时任务B终止,但任务A不知道这一点,并调用现在终止的任务B 由于任务B被终止,从任务A调用它将终止任务A 如何检查任务B是否从任务A终止 如果重要的话,我正在使用GNAT编程工作室。 我可以在终止之前创建一个由B设置的全局变量,但我更愿意从a中找出B的状态。您可以检查是否终止了B,请参阅 以下示例使用“Terminated”属性允许主任务确定一组任务何时完成 ---------------------------------------------------

我有一个task
A
调用task
B

有时任务
B
终止,但任务
A
不知道这一点,并调用现在终止的任务
B

由于任务
B
被终止,从任务
A
调用它将终止任务
A

如何检查任务
B
是否从任务
A
终止

如果重要的话,我正在使用GNAT编程工作室。

我可以在终止之前创建一个由
B
设置的全局变量,但我更愿意从
a
中找出
B
的状态。您可以检查是否终止了B,请参阅


以下示例使用“Terminated”属性允许主任务确定一组任务何时完成

------------------------------------------------------------------
--并行阵列填充--
------------------------------------------------------------------
使用Ada.Text_IO;使用Ada.Text\u IO;
使用Ada.Numerics.Discrete_Random;
日历;使用Ada.Calendar;
程序数组填充为
开始时间:时间:=时钟;
任务数:常数:=8;
切片大小:自然常数:=8_388_608;
最大大小:常量自然值:=Num_任务*切片大小-1;
子类型值的自然范围为0..10000;
类型Big_数组是整数的数组(自然范围0..Max_Size);
类型Big_Access为Access Big_数组;
--实例化通用包Ada.Numerics.Discrete\u Random
--在子类型值范围内生成随机数的步骤
--上述定义
包Rand_Nums是新的Ada.Numerics.Discrete_Random(值);
使用随机数;
--动态分配整数数组,初始化所有数组
--元素设置为Integer类型的最低有效值
_数组:Big_访问:=新的大_数组(其他=>Integer'First);
任务类型填充是
--Set_Low是主任务和
--任务类型填充的实例。这一点允许主要的
--任务将整数值>=0直接发送到填充任务
入口设置低(项目:自然);
端部填料;
任务体填充是
Id:天然的;
低_指数:自然;
高_指数:天然;
种子:发生器;
开始
重置(种子);
--填充任务等待主任务将值发送到
--入口设置为低。
接受设置低(项目:自然)do
Id:=项目;
端部设置_低;
低索引:=Id*切片大小;
高_指数:=低_指数+(切片大小-1);
对于低索引..高索引循环中的I
_数组(I):=随机(种子);
端环;
端部填料;
--创建包含填充任务的Num_任务的数组类型;
类型任务列表是填充的数组(自然范围0..Num_tasks-1);
--创建任务数组的实例。任务尽快开始
--创建此数组时
列表:任务列表;
开始——开始执行主任务
--将ID值发送到数组中填充任务的每个实例
--名单。
对于任务列表范围循环中的I
列表(I)设置为低(I);
端环;
循环--等待所有任务终止
如果列表(0)终止,则
列表(1)终止,然后
列表(2)终止,然后
列表(3)终止,然后
列表(4)终止,然后
列表(5)终止,然后
列表(6)终止,然后
第(7)条终止
出口;——退出这个循环
如果结束;
端环;
Put_线(“经过的时间”和持续时间”图像(时钟-开始时间)和“秒”);
结束数组填充;
if not B'Terminated then
   -- do something
end if;