Ada83或Ada95是否定义了支持多任务处理的内存模型?

时间:2013-07-03 20:36:46

标签: multithreading concurrency ada memory-model

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

是否有人知道Ada是否定义了内存模型?

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

2 个答案:

答案 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。对于并发性,这允许不同的线程(任务)共享资源而无需显式的互斥锁。