美文网首页
内存模型,顺序一致性

内存模型,顺序一致性

作者: yangxingpping | 来源:发表于2016-03-29 20:52 被阅读0次

对于同步,c++11添加了几个原子类型,类型如下atomic_xxx(atomic_int等),对于一般的线程之间的同步,只需要使用它们即可。

对于内存模型,如果是采用了弱顺序的内存模型,则在多个原子类型的操作顺序进行了重排,例如:

atomic_int x;

atomic_int y;

x = 1;

y=2;

上面的对x,y进行的赋值顺序可能是:y=2;x=1;

在c++11中,原子类型的成员函数总是保证顺序的一致性,这样,既禁止了编译器对原子类型变量间的重排序优化;但是对于像PowerPC这样的平台来说,不仅禁止了编译器的优化,还插入了大量的内存栅栏(对多线程而言,有很大的性能伤害)。

对于atomic_int的操作可以是(load取),(store存)。

内存顺序由6种:

    memory_order_relaxed  不对顺序做任何保障。

    memory_order_acquire  在本线程中,后续的读操作必须在本操作结束后执行。

    memory_order_release   所有之前的写操作完成之后才能进行本操作。

    memory_order_acq_rel    同时包含memory_order_acquire和memory_order_release。

    memory_order_consume  本线程中,所有的后续有关本原子类型的操作,必须在本条原子操作完成之后执行。

    memory_order_seq_cst     全部存取都按顺序执行。

相关文章

  • java 内存模型-09-jmm 汇总

    处理器内存模型 顺序一致性内存模型是一个理论参考模型,JMM 和处理器内存模型在设计时通常会把顺序一致性内存模型作...

  • java并发编程(四)

    java多线程编程(四) 引言: 内存模型的基础----内存模型相关的基本概念 java内存模型中的顺序一致性--...

  • 并发编程艺术-3

    本文主要简单介绍Java 内存模型的基础和相关概念,重排序和顺序一致性内存模型,同步原语 synchronized...

  • 第三章 Java内存模型

    深入内存模型。通过分析内存模型,展现线程之间的通信(对程序员来说完全透明)。 关键点:内存模型中的顺序一致性。重排...

  • 巨人大哥谈Java工程师高手之路

    JVM方面 JVM内存结构 堆、栈、方法区、直接内存、堆和栈区别 Java内存模型 内存可见性、重排序、顺序一致性...

  • jvm与Java的区别关联性

    JVM内存结构 堆、栈、方法区、直接内存、堆和栈区别 Java内存模型 内存可见性、重排序、顺序一致性、volat...

  • java框架工程结构总结

    JVM内存结构 堆、栈、方法区、直接内存、堆和栈区别 Java内存模型 内存可见性、重排序、顺序一致性、volat...

  • 阿里P7学习路线图

    一、基础篇JVMJVM内存结构堆、栈、方法区、直接内存、堆和栈区别Java内存模型内存可见性、重排序、顺序一致性、...

  • Java成神之路

    一、基础篇JVMJVM内存结构堆、栈、方法区、直接内存、堆和栈区别 Java内存模型内存可见性、重排序、顺序一致性...

  • 第三章 Java内存模型之顺序一致性⑤

    接上一章Java内存模型之重排序,我们来了解下顺序一致性。 学习完重排序之后,顺序一致性这个概念,也就很好懂了。 ...

网友评论

      本文标题:内存模型,顺序一致性

      本文链接:https://www.haomeiwen.com/subject/lprpqttx.html