1

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

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

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

4

2 回答 2

4

我认为在您所询问的意义上,最接近内存模型的是 ARM 的动态语义部分。

Ada 83 有pragma Shared

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

Ada 2012 用aspect替换了 pragma ,原因是好的但不是直接相关的:

Imported_Variable : Integer with
  Import, Convention => C, External_Name => "exported_variable", Volatile;
于 2013-07-03T22:15:31.870 回答
2

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

于 2013-07-04T07:37:53.590 回答