随着C和C ++的“最近”更改添加内存模型(类似于Java和C#),我想知道Ada83或Ada95内置的并发支持是否也定义了内存模型。
是否有人知道Ada是否定义了内存模型?
Bonus问题:Ada83是第一种为共享状态并发提供INBUILT支持的通用编程语言吗?
答案 0 :(得分:3)
我认为你所询问的最接近内存模型的是ARM的Dynamic Semantics部分。
Ada 83有pragma Shared。
Ada 95 replaced this与pragma Atomic,Volatile,Atomic_Components和Volatile_Components; Ada 2005与(在更正中)pragma Independent和Independent_Components(即引用的对象或其每个组件可独立寻址)相同。
Ada 2012用aspects取代了pragma,但不是直接相关原因:
Imported_Variable : Integer with
Import, Convention => C, External_Name => "exported_variable", Volatile;
答案 1 :(得分:2)
关于Tasking&共享内存,我认为你应该看Protected Types。对于并发性,这允许不同的线程(任务)共享资源而无需显式的互斥锁。