这样做(为清楚起见,添加了假定的循环语句):
loop select accept Stop; exit; or delay 3.0; -- do something end select; end loop;
介意一个人的身体 accept 只有在需要处理其参数时才需要声明。以来 Stop 没有,这没有任何意义 accept 有一个机构的声明。
accept
Stop
你的错误来自于这个规则 LRM,5.7 :
如果此构造本身由给定的loop_statement包围,则应用于给定loop_statement的exit_statement不应出现在body或accept_statement中。
我也换了你的 的 else 强> 到了 的 or 强> 所以这样 Stop 在整个等待时间内被接受,我认为这是你想要的。同 的 else 强> , Stop 只在当时被接受 的 select 强> 正在执行,而不是在执行之后 的 delay 强> 已经开始。
else
or
select
delay