码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 并行编程之memory_order

时间:2020-01-06 21:09:08      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:原子操作   cst   互斥   执行顺序   并行编程   www   color   处理   一个   

一.如果只是简单地解决在多线程中对共享资源的读写并发问题,只需要用C++以下内容: 线程类 thread, 原子数据类模板 atomic<T> t, 互斥 mutex, 锁 lock, 条件变量 condition_variables.

 
二.在此基础上,如果想在并行编程中获得更好的性能,尤其当使用的是一些弱内存顺序的平台(比如PowerPC)的话,设定原子操作间的内存顺序则很有必要.
 
 
C++11 加入了支持并行编程的原子操作模块,而所有的原子操作都有一个参数 memory_order.
1.内存模型 简介
内存模型是一个硬件上的概念,表示机器指令是以什么样的顺序被处理器执行的 (现代的处理器不是逐条处理机器指令的) .
 
typedef enum memory_order {
    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    // 全部存取都按顺序执行
    } memory_order;

 

 

C++ 并行编程之memory_order

标签:原子操作   cst   互斥   执行顺序   并行编程   www   color   处理   一个   

原文地址:https://www.cnblogs.com/guxuanqing/p/12158358.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!