CAS和原子操作/互斥锁的关系

简介: CAS和原子操作/互斥锁的关系

CAS和原子操作的关系


原子操作除了CAS,还有哪些?

除了 CAS,还有以下常见的原子操作:

  • 加法操作(atomic_add):原子地将一个变量加上一个指定的值。
  • 减法操作(atomic_sub):原子地将一个变量减去一个指定的值。
  • 与操作(atomic_and):原子地对一个变量和一个指定的值进行与操作。
  • 或操作(atomic_or):原子地对一个变量和一个指定的值进行或操作。
  • 异或操作(atomic_xor):原子地对一个变量和一个指定的值进行异或操作。
  • 交换操作(atomic_swap):原子地交换一个变量的值和另一个值
  • (比较并交换操作(atomic_compare_exchange):原子地比较一个变量的值和一个期望的值,如果相等则交换成一个新的值。)

这些原子操作都具有原子性,即在多线程环境下,多个线程可以同时访问同一个变量,但只有一个线程能够成功执行原子操作。原子操作可以用于实现同步机制,如互斥锁、自旋锁等,从而保证多线程操作的正确性和一致性。


CAS和互斥锁的区别?


  • 可以认为CAS是乐观锁,实现用到了自旋锁(因为一直自旋,消耗cpu;但自旋不会有内核态和用户态的切换,时间上会快);由硬件提供支持。有关自旋锁
  • 而互斥锁是悲观锁,对性能影响较大(消耗时间)。由操作系统来实现

Mutex vs Atomic。 CAS是原子操作的一种,需要自旋

目录
相关文章
|
8月前
|
应用服务中间件 Linux 调度
锁和原子操作CAS的底层实现
锁和原子操作CAS的底层实现
63 0
|
8月前
【原子操作】顺序操作
【原子操作】顺序操作
|
存储 编译器 API
锁与原子操作CAS
锁与原子操作CAS
157 0
|
3月前
|
缓存 数据库
读写锁和互斥锁的区别
【10月更文挑战第6天】
92 1
|
5月前
|
Java
什么是 CAS(自旋锁)? 它的优缺点? 如何使用CAS实现一把锁?
该博客文章解释了什么是CAS(自旋锁),包括CAS的基本概念、实现原理、优缺点,以及如何使用CAS实现锁的逻辑,并提供了使用CAS实现锁的Java完整代码示例和测试结果。
什么是 CAS(自旋锁)? 它的优缺点? 如何使用CAS实现一把锁?
|
5月前
|
存储 算法
什么是原子操作?
【8月更文挑战第24天】
105 0
|
API 调度 C语言
互斥锁,自旋锁,原子操作的原理,区别和实现
v互斥锁,自旋锁,原子操作的原理,区别和实现
152 0
|
Java 编译器 Linux
【多线程】锁策略、CAS、Synchronized
锁策略, cas 和 synchronized 优化过程
|
8月前
|
算法
原子操作CAS
原子操作CAS
46 0
|
8月前
|
缓存 Linux API
原子操作CAS与锁实现
原子操作CAS与锁实现

热门文章

最新文章