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 に答える