Ada 编程/编译指示/共享
外观
pragma Shared (local_name);
自 Ada 95 以来,此语言特性已被弃用。
共享 是 Ada 83 表示编译指示,等效于 原子。[1] 但是,它只能应用于变量,而 Atomic 也可以用于类型。
由于以下几个原因,它在 Ada 95 中被从语言中删除
在 Ada 95 中,编译指示 Shared 被编译指示 原子、易变、原子组件 和 易变组件 所取代。
Shared 是 Ada 83 的标准编译指示,因此所有 Ada 83 编译器都必须实现它。它在语言的后续版本中已过时,但它等效于编译指示 原子,因此它通常由 Ada 95 编译器为了兼容性而实现。[4]
type
Device_Status : Status_Register;pragma
Shared (Device_Status);
对于任务来说,使用共享变量通常是不安全的。[5]
- ↑ 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 中没有的功能。"
- ↑ a b Laurent Guerby (1995). "C.5 共享变量控制". Ada 95 理据. Intermetrics.
编译指示 Shared 非常薄弱。语义只在任务方面定义,而且定义得并不清楚。这使得它不适合与非 Ada 软件或硬件设备通信。此外,它只能应用于有限的物体集。例如,它不能应用于数组的组件。
{{cite book}}
:|access-date=
requires|url=
(帮助); External link in
(帮助); Unknown parameter|chapter=
|month=
ignored (帮助) - ↑ "C.6 共享变量控制". 注释 Ada 95 参考手册. 检索于 2008-05-28.
Pragma Atomic 替换了 Ada 83 中的 pragma Shared。名称 Shared 很容易混淆,因为该 pragma 不是用来标记变量为共享的。
{{cite book}}
: 未知参数|chapterurl=
被忽略 (|chapter-url=
建议) (帮助) - ↑ "实现定义的编译指示". GNAT Pro 参考手册. AdaCore. 检索于 2008-05-28.
该 pragma 为与 Ada 83 的兼容性而提供。语法和语义与 pragma Atomic 相同。
{{cite book}}
: 未知参数|chapterurl=
被忽略 (|chapter-url=
建议) (帮助) - ↑ "7.4.7 共享变量和 Pragma Shared". Ada 83 质量和风格. 软件生产力联盟,Inc.
不要将共享变量用作任务同步装置。只有在运行时系统缺陷迫使你这样做时,才使用 pragma Shared。
{{cite book}}
:|access-date=
需要|url=
(帮助); 外部链接在
中 (帮助)|chapter=