【问题标题】:Did Ada83 or Ada95 define a memory model to support multitasking?Ada83 或 Ada95 是否定义了支持多任务处理的内存模型?
【发布时间】:2013-07-03 20:36:45
【问题描述】:

随着对 C 和 C++ 的“最近”更改添加内存模型(类似于 Java 和 C#),我想知道 Ada83 或 Ada95 对并发的内置支持是否也定义了内存模型。

有人知道关于 Ada 是否定义了内存模型的任何参考资料吗?

额外问题:Ada83 是第一个为共享状态并发提供 INBUILT 支持的通用编程语言吗?

【问题讨论】:

    标签: multithreading concurrency ada memory-model


    【解决方案1】:

    我认为最接近您所询问的内存模型的是 ARM 的 Dynamic Semantics 部分。

    Ada 83 拥有pragma Shared。

    Ada 95 replaced this 带有编译指示 Atomic、Volatile、Atomic_Components 和 Volatile_Components; Ada 2005 与(更正中的)编译指示 Independent 和 Independent_Components 相同(即,引用的对象或其每个组件都是可独立寻址的)。

    Ada 2012 将 pragma 替换为 aspects,原因很好,但并非直接相关:

    Imported_Variable : Integer with
      Import, Convention => C, External_Name => "exported_variable", Volatile;
    

    【讨论】:

      【解决方案2】:

      关于任务和共享内存,我认为您应该查看Protected Types。对于并发性,这允许不同的线程(任务)共享资源,而无需显式互斥锁。

      【讨论】:

        猜你喜欢
        • 2011-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-12
        • 2020-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多