C++11 atomic和内存序

1. 相关文章

这一块文章较多,但是鱼龙混杂,这里贴出来比较好的几篇文章。

关于内存序目前看到的最好的两篇文章,作者写的图文并茂,层层递进,是非常高水平的技术文章:

关于 C++11 中的atomic和内存序:

2. 理解

对于内存序,我个人理解是为了对某些计算机系统设计对性能的妥协,而打的补丁。

atomic可以保证原子性,原子性是为了在线程间加锁。而内存序是为了在单线程执行视角下,保证指令的相对顺序和编码中的顺序一致。所以原子性+顺序一致性就可以保证数据在线程间和线程内都是安全的,不会被意外篡改。

atmic模板类,简单理解就是另外一种高效的锁,由操作系统内核保证原子性。例如,可以把store看作:

void store(const T &val)
{
	staic std::mutex mutex;
	std::lock_guard<std::mutex>  locker(mutex);
	this->val = val;
}

其他原子函数类似。上面的mutex只是示意,实际实现中,编译器采用的是更加底层的,更加高效的底层硬件相关的锁,具体是什么这里不深究了,有空可以找找资料,看看gcc的具体实现。

关于std::atomic的使用:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

撬动未来的支点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值