跳转到内容

Ada 编程/编译指示/共享

来自维基教科书,开放的书籍,为开放的世界

Ada. Time-tested, safe and secure.
Ada. 经久考验,安全可靠。
pragma Shared (local_name);

Ada 95 以来,此语言特性已被弃用。

共享Ada 83 表示编译指示,等效于 原子[1] 但是,它只能应用于变量,而 Atomic 也可以用于类型。

由于以下几个原因,它在 Ada 95 中被从语言中删除

  • 它没有被正确定义[2]
  • 它不能应用于数组[2]
  • 名称 共享 很令人困惑[3]

在 Ada 95 中,编译指示 Shared 被编译指示 原子易变原子组件易变组件 所取代。

可移植性

[编辑 | 编辑源代码]

Shared 是 Ada 83 的标准编译指示,因此所有 Ada 83 编译器都必须实现它。它在语言的后续版本中已过时,但它等效于编译指示 原子,因此它通常由 Ada 95 编译器为了兼容性而实现。[4]

type Device_Status :  Status_Register;
pragma Shared (Device_Status);

错误用法

[编辑 | 编辑源代码]

对于任务来说,使用共享变量通常是不安全的。[5]

维基教科书

[编辑 | 编辑源代码]

Ada 83 参考手册

[编辑 | 编辑源代码]

Ada 95 理据

[编辑 | 编辑源代码]

Ada 83 理据

[编辑 | 编辑源代码]

Ada 83 质量和风格指南

[编辑 | 编辑源代码]

参考文献

[编辑 | 编辑源代码]
  1. Robert Dewar (1996-02-17). "编译指示 Shared (was Ada is almost ....)". comp.lang.ada. (网络链接). Retrieved on 2008-05-28. "编译指示 Atomic 与编译指示 Volatile 完全不同。Ada 中的编译指示 Atomic 本质上与 Ada 83 中的编译指示 Shared 相同。Ada 中的编译指示 Volatile 本质上与 C 中的 volatile 相同,并且是 Ada 83 中没有的功能。"
  2. a b Laurent Guerby (1995). "C.5 共享变量控制". Ada 95 理据. Intermetrics. 编译指示 Shared 非常薄弱。语义只在任务方面定义,而且定义得并不清楚。这使得它不适合与非 Ada 软件或硬件设备通信。此外,它只能应用于有限的物体集。例如,它不能应用于数组的组件。 {{cite book}}: |access-date= requires |url= (帮助); External link in |chapter= (帮助); Unknown parameter |month= ignored (帮助)
  3. "C.6 共享变量控制". 注释 Ada 95 参考手册. 检索于 2008-05-28. Pragma Atomic 替换了 Ada 83 中的 pragma Shared。名称 Shared 很容易混淆,因为该 pragma 不是用来标记变量为共享的。 {{cite book}}: 未知参数 |chapterurl= 被忽略 (|chapter-url= 建议) (帮助)
  4. "实现定义的编译指示". GNAT Pro 参考手册. AdaCore. 检索于 2008-05-28. 该 pragma 为与 Ada 83 的兼容性而提供。语法和语义与 pragma Atomic 相同。 {{cite book}}: 未知参数 |chapterurl= 被忽略 (|chapter-url= 建议) (帮助)
  5. "7.4.7 共享变量和 Pragma Shared". Ada 83 质量和风格. 软件生产力联盟,Inc. 不要将共享变量用作任务同步装置。只有在运行时系统缺陷迫使你这样做时,才使用 pragma Shared。 {{cite book}}: |access-date= 需要 |url= (帮助); 外部链接在 |chapter= 中 (帮助)
华夏公益教科书