阿达:然后选择中止声明

时间:2013-05-02 20:52:06

标签: synchronization task ada

我对Ada中的“select then abort”语言结构有疑问。我正在使用的任务看起来像:

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

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

谢谢

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

根据adaic.org处的信息,then abortend select之间的部分可以在任何地方中止。