【编程技巧】无锁并发之原子操作CAS

目录

前言

李柱明博客:https://www.cnblogs.com/lizhuming/p/15486895.html

一、什么是原子操作

不可被中断的一个或者一系列操作、

CAS 是 Compare And Set 的缩写,是以一种 无锁的方式实现并发控制 。在实际情况下,同时操作同一个对象的概率非常小,所以多数加锁操作做的是无用功, CAS 以一种乐观锁的方式实现并发控制

二、实现原子操作的方式

Java 可以通过锁和循环 CAS 的方式实现原子操作。

三、CAS( Compare And Swap ) 为什么要有 CAS?

Compare And Swap 就是比较并且交换的一个原子操作,由 Cpu 在指令级别上进行保证。

为什么要有 CAS:因为通过锁实现原子操作时,其他线程必须等待已经获得锁的线程运行完以后才能获得资源,这样就会占用系统的大量资源

四、CAS 包含哪些参数?

CAS 包含三个参数:

  1. 变量所在内存地址 V;
  2. 变量对应的值 A;
  3. 我们将要修改的值 B。

如果说 V 上的变量的值是 A 的话,就用 B 重新赋值,如果不是 A,那就什么事也不做,操作的返回结果原值是多少。

循环 CAS:在一个(死)循环【for(;

上一篇:【数据结构1-1】线性表 P4387 【深基15.习9】验证栈序列


下一篇:高频leetcode排序部分:15. 三数之和