我有一个关于 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;

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

谢谢

最佳答案

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

关于synchronization - Ada:选择然后中止语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16347516/

10-13 02:10