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