Day5 atomic

原子性:指的是事务的不可分割性,即一个事务的所有操作要么不间断地全部被执行,要么一个也没有执行。

atomic可以使得某个变量具有原子性,使得在多线程中对某一变量的简单操作可以被正确执行,比如下方的a++这个操作,看着只是一步,但其实在汇编中是多步执行的,如果在多个线程中同时对某个变量做出改变,如++等,加锁的话开销会大一点,不加锁的话又会出异常,这时可以用atomic声明该变量为原子类型,虽然只能进行简单的操作,包括:++,--,+=,*=,/=等,但开销小。

int a;
a++;
//声明变量b为原子类型的整形
atomic<int> b;

atomic没有拷贝构造函数,不能用其他的atomic类型的变量赋值,但可以通过它自带的load函数进行拷贝,也可以通过store进行赋值。

atomic<int> ato = 2;
//atomic<int> ato1 = ato;  错的
atomic<int> ato2(ato.load());  //对的
ato.store(10);

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值