C++并行编程

相关概念

并发:宏观上是同时,微观上仍是顺序执行
并行:同时间执行

并发安全

1.多个cpu修改同一个值影响原子性
2.cpu缓存一致性影响可见性 cpu缓存和volatile

缓存一致性不是实时一致性, cpu1修改共享缓存a, 写到自己的store buffer中,同时通知其他cpu更新cacheline;其他cpu收到通知后会加入到自己的invalid queue中,延后更新. 这样就会导致 cpu2读取不到a的最新值。

3.指令重排影响有序性 apache/incubator-brpc

数据安全访问

方式样例备注
lock互斥锁,读写锁,自旋锁锁的切换有开销
memory barrieratomic(CAS)1.编译器与cpu无法乱序执行,无法得到相应加速效果,保证可见性和有序性; 2.适合冲突较少的简单对象的操作,如果太多线程同时自旋,那么长时间循环会导致 CPU 开销大; 3.ABA问题(引入变量版本号解决),进阶CAS2,DCAS
COWdouble-buffer(智能指针交换), Hazard pointer, Rcu(延后处理)需要处理旧数据的内存释放
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值