它是好的标记还是不是 Ada95



考虑 Ada95 中的以下控制器(受保护对象),以适应任务调用Waiting()这个任务,如果等待标记(标记)已经在选择标记 ( Selecting_Marker 上相对应,则它不会被置于等待状态 ( ) 仅在初始化之前自然:

protected type Controller is
    entry Waiting(Marker : in Marker_Type);
    procedure WakeUp(Marker : in Marker_Type);
private
    Tentative_Count : Natural := 0;
    Selecting_Marker : Marker_Type;
end Controller;
protected body Controller is
    entry Waiting (Marker : in Marker_Type) when Tentative_Count > 0 is
    begin
        Tentative_Count := Tentative_Count - 1;
        if Selecting_Marker /= Marker then 
            requeue Waiting;
        end if;
    end Waiting;
    procedure WakeUp (Marker : in Marker_Type) is
    begin
        Selecting_Marker := Marker;
        Tentative_Count := Waiting'Count;
    end WakeUp;
end Controller;

对象是更改受保护对象的行为,可能是以下行:

entry Waiting (Marker : in Marker_Type) when Tentative_Count > 0 is

我不精通受保护

的对象,所以不会提供更多,只能说你可能最好a)重读这本书中关于受保护对象的章节;b)了解代码的目标是什么以及老师/书籍在问什么。

b部分尤其重要,因为在现实生活中,你需要能够将规范转化为实现;而且通常,精确的措辞与示例和/或示例/推理不一致。

其他资源:

  • Ada 95 基本原理:II.9 受保护的类型
  • Ada 95 基本原理:9.1 受保护的类型

相关内容

  • 没有找到相关文章

最新更新