阿达:进入意义

时间:2017-05-30 16:43:41

标签: ada

我是Ada的绝对初学者,有一件事我找不到具体的定义 - 那就是陈述entry

我理解带有障碍的条目 - 如果障碍是真的,则语句可以执行,如果为false,则任务排队,直到它被评估为真。

例如:

entry Get(Item : out Data_Item) when Number_In_Buffer /= 0 is
begin
...
end Get;

但是如果声明entry出现而没有以下when声明,这意味着什么?

2 个答案:

答案 0 :(得分:4)

ARM9.4描述了受保护对象,这是入口主体(如代码中)出现的地方。

您的问题并不清楚,但我认为您正在描述受保护的规范,并附有条目声明。

Declaration

protected type Resource is
   entry Seize;
   procedure Release;
private
   Busy : Boolean := False;
end Resource;

Corresponding body

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.9when True就可以了。

答案 1 :(得分:0)

ENTRY也是TASK通信的连接点。在TASK定义中,它是ENTRY。在TASK BODY中,它是一个ACCEPT声明。因此,TASK定义中的每个ENTRY在TASK正文中都有相应的ACCEPT。