Ada 程式設計/編譯指示/共享
外觀
pragma Shared (local_name);
自 Ada 95 以來,此語言特性已被棄用。
共享 是 Ada 83 表示編譯指示,等效於 原子。[1] 但是,它只能應用於變數,而 Atomic 也可以用於型別。
由於以下幾個原因,它在 Ada 95 中被從語言中刪除
在 Ada 95 中,編譯指示 Shared 被編譯指示 原子、易變、原子元件 和 易變元件 所取代。
Shared 是 Ada 83 的標準編譯指示,因此所有 Ada 83 編譯器都必須實現它。它在語言的後續版本中已過時,但它等效於編譯指示 原子,因此它通常由 Ada 95 編譯器為了相容性而實現。[4]
typeDevice_Status : Status_Register;pragmaShared (Device_Status);
對於任務來說,使用共享變數通常是不安全的。[5]
- Ada 程式設計
- Ada 程式設計/Ada 83
- Ada 程式設計/編譯指示
- Ada 程式設計/編譯指示/原子
- Ada 程式設計/編譯指示/易變
- Ada 程式設計/編譯指示/原子元件
- Ada 程式設計/編譯指示/易變元件
- ↑ 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=
