3

我对 Ada 中的“选择然后中止”语言结构有疑问。我正在使用的任务类似于:

select
  delay 1.0;
  do something with the partial result;
then abort
  loop 
    ...
    long calculation
    ...
    entry call to other task;
    ...
  end loop;
end select;

中止分支中的代码是否可以在任何地方或仅在某些点(如延迟语句或入口调用)中止?在我的程序中,中止分支中的代码执行长时间计算,当中止时,部分计算结果仍然有用。但是如果代码可以在任何地方中断,就会出现数据不一致的问题。

谢谢

4

2 回答 2

2

中止可以发生在任何地方,除了中止延迟区域。受保护操作是中止延迟区域,因此您可以将部分结果存储在受保护对象中。

于 2013-05-03T05:37:29.777 回答
1

根据adaic.org上的信息,介于两者之间then abort的部分end select可以在任何地方中止。

于 2013-05-03T02:33:46.383 回答