原子操作和互斥量的区别

原子操作和互斥量的区别

原子操作和互斥锁都是并发编程中常见的技术。

原子操作

原子操作就是操作过程中不能被中断的过程,在针对某个值得原子操作,在被进行的过程中CPU绝对不会再进行其他的针对该值的操作。原子操作仅会由一个CPU指令代表和完成,原子操作是无锁的,常常直接通过CPU指令直接实现。其他同步技术实现常常依赖于原子操作。

互斥锁和原子锁的区别

严格来说互斥锁是一个数据结构,是写代码开发人员人为约束的一种都要遵循的一系列操作。 原子操作是单个不可被打断的操作,没有其他线程可以打断它。

  • 原子操作的优势是更加轻量,可以在不形成临界区的情况下完成并发安全的值得替换操作。可以大大减少同步对程序性能的消耗。
  • 原子操作的劣势,原子操作是乐观的,总是假设操作未被改变,在被操作的值被频繁改变的情况下,原子操作并不那么容易成功,而使用互斥锁总是趋于悲观,我们总是假设会有并发的操作要修改被操作的值,因此使用锁对一系列操作加上临界区保护。
  1. 互斥锁是一种数据结构,用来让一个线程执行程序的关键部分
  2. 原子操作针对单个值
  3. 互斥锁是悲观锁,总是假设有另外一个线程对要修改的数据有竞争关系。
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值