跳轉到內容

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= 中 (幫助)
華夏公益教科書