Item40 Use std::atomic for concurrency, volatile for specific memory

volatile在C++并发编程中并不适用,而std::atomic提供了原子性操作,保证了多线程环境下的数据一致性。volatile主要用于防止编译器优化,确保特殊硬件交互的正确性。文章通过例子解释了两者的区别和应用场景。
摘要由CSDN通过智能技术生成

   volatile关键字在C++中很少被使用,更准确来说是很少被正确使用,它的用途令人很迷惑,甚至这个关键字都不会出现在并发章节。因为这个关键字对于并发编程来说没有任何用处,但是在其他编程语言中这个关键字的用途却很大,因此很值得在本文去探讨一下volatile关键字,排除读者们对volatile关键字的困扰。

推荐一下何登成大神的一篇关于volatile关键字的博客C/C++ Volatile关键词深度剖析

   在C++11中提供了一个std::atomic类模版,可以具体实例化出int、bool、指针等类型实例,这个实例保证了操作的原子性,可以被其他线程查看到操作后的结果。就好比是对操作进行了加锁,但是性能损耗更小,因为其内部使用了一种特殊的机器指令实现,该模版类的基本使用如下:

std::atomic<int> ai(0);
ai = 10;            // 原子的设置ai的值为10
std
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值