我是Ada的绝对初学者,有一件事我找不到具体的定义--那就是entry语句。
我理解带有屏障的条目--如果屏障为真,则语句可以执行,如果为false,则任务将排队,直到任务被计算为真为止。
例如:
entry Get(Item : out Data_Item) when Number_In_Buffer /= 0 is
begin
...
end Get;但是,对于entry语句来说,如果没有出现在中,下面的when语句意味着什么?
发布于 2017-05-30 19:14:27
ARM9.4描述受保护的对象,这是条目体(如您的代码)出现的地方。
从您的问题中还不清楚,但我认为您是在用一个条目声明来描述一个受保护的规范。
声明
protected type Resource is
entry Seize;
procedure Release;
private
Busy : Boolean := False;
end Resource;对应体
protected body Resource is
entry Seize when not Busy is
begin
Busy := True;
end Seize;
procedure Release is
begin
Busy := False;
end Release;
end Resource;如何保护条目不是调用者的事,只是它是。有一件事让我感到困惑,那就是一个进入体必须有一个守卫;在某些情况下(请求搜索二.9. Ada 95理由以寻找protected Event),when True是可以的。
发布于 2017-05-31 04:00:49
条目也是任务通信的连接点。在任务定义中,它是ENTRY。在任务主体中,它是接受语句。因此,任务定义中的每个条目在任务主体中都有相应的接受项。
https://stackoverflow.com/questions/44267708
复制相似问题