我有一个关于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分支中的代码执行很长的计算,当中止时,部分计算结果仍然有用。但是,如果代码在任何地方都可以中断,那么就会出现数据不一致的问题。
谢谢
发布于 2013-05-03 13:37:30
中止可以在任何地方发生,除了在中止延迟区域中。受保护操作是一个中止延迟区域,因此您可以将部分结果存储在受保护对象中。
发布于 2013-05-03 10:33:46
根据adaic.org上的信息,then abort和end select之间的部件可以在任何地方中止。
https://stackoverflow.com/questions/16347516
复制相似问题