找回密码
 立即注册
搜索
热搜: 活动 通知
查看: 884|回复: 1

memory_order_acq_rel和 memory_order_consume

[复制链接]

7

主题

17

回帖

253

积分

至尊会员

积分
253

至尊会员

发表于 2024-5-23 16:48:34 | 显示全部楼层 |阅读模式
根据老师推荐的资料来看:memory_order_acq_rel 和 memory_order_seq_cst 是一样的,即以这个原子操作为界限,界限之前的写和读不允许重排到界限之后;界限之后的写和读也不允许被重排到界限之前



memory_order_consume 目前编译器不支持,默认提升为memory_order_acquire

memory_order_consume的含义是当一个线程执行带有 memory_order_consume 的加载操作时,该线程在接下来的代码中依赖于这个加载操作的所有操作都不能在该加载操作之前重排

memory_order_consume 基于依赖链工作。依赖链是指从一个加载操作开始,所有直接或间接依赖于该加载操作的操作序列。只要存在这样的依赖链,编译器和 CPU 就必须确保这些依赖操作的顺序


是否有哪里不对的吗?

416

主题

315

回帖

3288

积分

管理员

积分
3288
发表于 2024-5-23 18:05:20 | 显示全部楼层
不考虑consume。

对于acq_rel,
它与seq_cst到底有什么区别??

-----Valid with atomic read-modify-write,Not valid with atomic load and store
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|鼠侠网 ( 吉ICP备19001332号 )

GMT+8, 2024-12-22 09:24 , Processed in 0.215279 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表