当前位置: 首页 > news >正文

多线程并发篇---第十一篇

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、CAS的原理
  • 二、CAS有什么缺点吗?
  • 三、引用类型有哪些?有什么区别?


前言


一、CAS的原理

CAS叫做CompareAndSwap,比较并交换,主要是通过处理器的指令来保证操作的原子性,它包含
三个操作数:

  1. 变量内存地址,V表示
  2. 旧的预期值,A表示
  3. 准备设置的新值,B表示
    当执行CAS指令时,只有当V等于A时,才会用B去更新V的值,否则就不会执行更新操作。

二、CAS有什么缺点吗?

CAS的缺点主要有3点:
ABA问题:ABA的问题指的是在CAS更新的过程中,当读取到的值是A,然后准备赋值的时候仍然是
A,但是实际上有可能A的值被改成了B,然后又被改回了A,这个CAS更新的漏洞就叫做ABA。只是
ABA的问题大部分场景下都不影响并发的最终效果。
Java中有AtomicStampedReference来解决这个问题,他加入了预期标志和更新后标志两个

http://www.lryc.cn/news/193204.html

相关文章:

  • JVM第六讲:JVM 基础 - Java 内存模型引入
  • 机房安全管理制度
  • 【自然语言处理】— 隐马尔可夫模型详解、例解
  • 运行的 akrun 会打印信息到控制台,如何取消打印 -- chatGPT
  • 【React】03-React面向组件编程2
  • 【python编程】python无法import模块的一种原因分析
  • vue3.0与vue2.0的区别
  • 09_Webpack打包工具
  • 小程序 | 小程序后端用什么语言开发比较好
  • Websocket升级版
  • 基于音频SOC开发板的主动降噪ANC算法源码实现
  • 【Pytorch】深度学习之损失函数
  • 3.4 构造方法
  • 代码随想录
  • 2核4G游戏服务器推荐(阿里云/腾讯云/华为云)
  • SQL标识列实现自动编号的步骤和技巧以及优势
  • 【Debian】报错:su: Authentication failure
  • 我测试用的mark down教程
  • 网络编程基础知识总结——IP,端口,协议
  • 【LeetCode力扣】297. 二叉树的序列化与反序列化
  • Linux寄存器+Linux2.6内核进程调度队列+命令行参数+环境变量
  • 组合数(2)获取C(n,k)组合数列表的QT实现
  • SparkCore编程RDD
  • VBA技术资料MF69:添加和删除工作表中的分页符
  • 数字技术助力智慧公厕,让公厕变身为全新创新应用
  • electron 升级 v22 遇到问题
  • 跟我学c++中级篇——Pimpl
  • [补题记录] Atcoder Beginner Contest 295(E)
  • 解决git在window11操作很慢,占用很大cpu的问题
  • C++智能指针(二)——weak_ptr初探