我是Ada的绝对初学者,有一件事我找不到具体的定义 - 那就是陈述entry
。
我理解带有障碍的条目 - 如果障碍是真的,则语句可以执行,如果为false,则任务排队,直到它被评估为真。
例如:
entry Get(Item : out Data_Item) when Number_In_Buffer /= 0 is
begin
...
end Get;
但是如果声明entry
出现而没有以下when
声明,这意味着什么?
答案 0 :(得分:4)
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;
调用者的业务不是如何保护条目,只是确实如此。有一件事让我感到困惑的是,一个入境机构必须有一个警卫;在某些情况下(重新排队 - protected Event
搜索the Ada 95 Rationale II.9)when True
就可以了。
答案 1 :(得分:0)
ENTRY也是TASK通信的连接点。在TASK定义中,它是ENTRY。在TASK BODY中,它是一个ACCEPT声明。因此,TASK定义中的每个ENTRY在TASK正文中都有相应的ACCEPT。