顺序一致的内存和原子寄存器

时间:2016-04-28 01:00:49

标签: java c++11 concurrency theory

顺序一致性(对于无数据竞争的程序,SC-DRF)是现代编程语言(例如Java或C ++ 11)提供的最强共享内存一致性模型。

多处理器编程艺术'''作者(M. Herlihy和N. Shavit)在本书的大多数定理中都使用了原子寄存器的概念。

在C ++中使用volatile的Java和原子语中的std::memory_order seq_cst引用是否(无法区分)原子寄存器是否正确?如果它的内存模型保证标记为std::atomic的内存位置的整个空间的顺序一致性,是否可以观察到C ++中可线性化寄存器和原子之间的差异?

1 个答案:

答案 0 :(得分:0)

对于C / C ++案例,使用memory_order_seq_cst读取或修改的原子应该为您提供所需的一切(原子RMW操作,并保证线性化。)

对于java,volatile给你读取和写入的线性化,但任何严重的并发代码也可能需要RMW(即比较和交换),所以查看java Atomic包以查找也进行比较和交换的类型(I认为在不使用这些软件包或使用synchronized关键字的情况下无法实现比较和交换自己http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/package-summary.html