【发布时间】:2013-07-03 20:36:45
【问题描述】:
随着对 C 和 C++ 的“最近”更改添加内存模型(类似于 Java 和 C#),我想知道 Ada83 或 Ada95 对并发的内置支持是否也定义了内存模型。
有人知道关于 Ada 是否定义了内存模型的任何参考资料吗?
额外问题:Ada83 是第一个为共享状态并发提供 INBUILT 支持的通用编程语言吗?
【问题讨论】:
标签: multithreading concurrency ada memory-model
随着对 C 和 C++ 的“最近”更改添加内存模型(类似于 Java 和 C#),我想知道 Ada83 或 Ada95 对并发的内置支持是否也定义了内存模型。
有人知道关于 Ada 是否定义了内存模型的任何参考资料吗?
额外问题:Ada83 是第一个为共享状态并发提供 INBUILT 支持的通用编程语言吗?
【问题讨论】:
标签: multithreading concurrency ada memory-model
我认为最接近您所询问的内存模型的是 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;
【讨论】:
关于任务和共享内存,我认为您应该查看Protected Types。对于并发性,这允许不同的线程(任务)共享资源,而无需显式互斥锁。
【讨论】: