`
foreversunyao
  • 浏览: 211771 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

比较并交换 (CAS) 原理

 
阅读更多

引用:http://blog.csdn.net/cleverpig2003/article/details/251679

比较并交换 (CAS)
支持并发的第一个处理器提供原子的测试并设置操作,通常在单位上运行这项操作。现在的处理器(包括 Intel 和 Sparc 处理器)使用的最通用的方法是实现名为比较并转换或 CAS 的原语。(在 Intel 处理器中,比较并交换通过指令的 cmpxchg 系列实现。PowerPC 处理器有一对名为“加载并保留”和“条件存储”的指令,它们实现相同的目地;MIPS 与 PowerPC 处理器相似,除了第一个指令称为“加载链接”。)

CAS 操作包含三个操作数 —— 内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值。否则,处理器不做任何操作。无论哪种情况,它都会在 CAS 指令之前返回该位置的值。(在 CAS 的一些特殊情况下将仅返回 CAS 是否成功,而不提取当前值。)CAS 有效地说明了“我认为位置 V 应该包含值 A;如果包含该值,则将 B 放到这个位置;否则,不要更改该位置,只告诉我这个位置现在的值即可。”

通常将 CAS 用于同步的方式是从地址 V 读取值 A,执行多步计算来获得新值 B,然后使用 CAS 将 V 的值从 A 改为 B。如果 V 处的值尚未同时更改,则 CAS 操作成功。

类似于 CAS 的指令允许算法执行读-修改-写操作,而无需害怕其他线程同时修改变量,因为如果其他线程修改变量,那么 CAS 会检测它(并失败),算法可以对该操作重新计算。清单 3 说明了 CAS 操作的行为(而不是性能特征),但是 CAS 的价值是它可以在硬件中实现,并且是极轻量级的(在大多数处理器中):

 

分享到:
评论

相关推荐

    Java CAS 原理分析

    CAS是一种用于多线程环境下的同步机制,其核心在于原子性的比较并交换操作。具体而言,CAS操作包含三个操作数:内存地址V、旧的预期值O以及新的替换值N。如果地址V处的值与预期值O相同,则将V处的值更新为N;如果...

    CAS原理 java 并发

    在Java并发编程中,CAS(Compare and Swap,比较并交换)是一种无锁算法,广泛应用于多线程环境下的数据同步。它通过硬件指令来实现原子操作,提升了并发性能,同时避免了锁带来的开销和死锁问题。 **一、CAS原理**...

    CAS原理分析

    CAS的全称是Compare And Swap 即比较交换;在计算机科学中,比较和交换(Conmpare And Swap)是用于实现多线程同步的原子指令。 它将内存位置的内容与给定值进行比较,只有在相同的情况下,将该内存位置的内容修改为...

    JAVA CAS实现原理与使用.docx

    Java并发编程中,CAS(Compare and Swap,比较并交换)是一种无锁算法,它提供了一种在多线程环境下更新共享变量的方式,避免了传统锁机制带来的诸多问题。在JDK 5之前,Java主要依赖`synchronized`关键字来保证线程...

    JAVA CAS深度分析

    CAS 操作可以分为三个步骤:比较、交换和返回结果。在 CAS 操作过程中,如果比较的结果为 true,则将内存值修改为新值,并返回 true;否则,什么都不做,并返回 false。 JAVA 中的 CAS 操作主要应用于 java.util....

    现代交换原理课件.PPT

    现代交换原理是信息技术领域中的重要课程,主要涵盖了通信网络中数据和语音交换的核心概念和技术。在本课件中,我们将深入探讨以下几个关键知识点: 1. **交换技术概论**:交换技术是通信网络的基础,它涉及到如何...

    Java CAS底层实现原理实例详解

    CAS 的概念是,比较并交换,解决多线程并行情况下使用锁造成性能损耗的一种机制。CAS(V, A, B),V为内存地址、A为预期原值,B为新值。如果内存地址的值与预期原值相匹配,那么将该位置值更新为新值。否则,说明...

    单点登入--CAS3.0

    CAS3.0是其较早的一个稳定版本,虽然现在已经有了更新的版本,但理解CAS3.0的基本工作原理对于学习SSO系统设计至关重要。 **CAS3.0的工作流程:** 1. **用户请求服务**:用户尝试访问受CAS保护的应用系统,如博客...

    CAS单点登录多语言整合文档+源码

    首先,我们来深入理解一下CAS的基本工作原理。当用户尝试访问受CAS保护的应用时,会被重定向到CAS服务器进行身份验证。如果用户已经通过了CAS的身份验证,那么他们可以无缝地访问其他受保护的应用,因为CAS会记住...

    现代交换原理ppt课件(陈建亚)

    《现代交换原理》课程主要讲解了通信网络中的信令系统,这是通信网中不可或缺的组成部分,主要用于协调网络设备建立和管理通信连接。信令可以理解为一种“通信语言”,它控制着通信网络中各种通信连接的建立、拆除,...

    cas-server-4.0.0-release部署包

    CAS通过在客户端和各个服务之间交换票据(Ticket)来实现这一功能。 2. **CAS架构**:CAS Server主要由三个组件构成:CAS Server本身、CAS Client和CAS Proxy。CAS Server处理用户的身份验证,CAS Client负责与CAS ...

    JUC最详细思维导图,一次了解读写锁,可重入锁,Cas原理,volatile 关键字原理

    CAS(Compare and Swap,比较并交换)是一种无锁算法,它是许多并发工具的基础,比如`AtomicInteger`、`AtomicLong`和`AtomicReference`。这些原子类使用硬件级别的CAS指令来保证在多线程环境下的原子性操作,从而...

    Java CAS基本实现原理代码实例解析

    1. Java CAS 的原理是比较并交换。 2. CAS 可以实现原子性和可见性。 3. CAS 可以避免加锁和解锁的开销。 4. Java 中的 CAS 是通过 java.util.concurrent.atomic 包来实现的。 5. CAS 可以应用于多种场景,例如多...

    casclient-3.1.6源码

    2. **票据交换**:如果用户成功登录,CAS服务器会返回一个服务票证(Service Ticket),此票证是临时的、一次性使用的。 3. **服务验证**:用户携带服务票证回到原请求的应用,应用会向CAS服务器验证票证,验证通过...

    CAS无锁算法.pdf

    CAS是英文“Compare and Swap”的缩写,中文含义为“比较并交换”。该算法通过比较变量的预期值与当前值,若两者相等则将当前值更新为新值,这一操作如果成功即返回true,否则返回false。在此过程中,由于是通过CPU...

    架构师熟悉cas技术方案实现sso

    CAS的主要目标是简化跨系统的身份验证过程,提高安全性,并减少开发者的负担。 ##### 1.2 主要特性 1. **多协议支持**:CAS支持多种认证协议,包括自定义协议、CAS协议、OAuth、OpenID、RESTful API、SAML 1.1与...

    基于CAS的统一认证平台的设计与实现.pdf

    之后的访问过程中,用户无需重复提供凭证,因为CAS服务会为每个用户建立一个票据(ticket),作为用户身份的凭证,在不同应用之间进行交换验证。 3. CAS体系结构: CAS系统一般由几个核心组件构成:CAS服务器、CAS...

    基于cas单点登录的实现pdf

    #### 三、CAS原理与配置 CAS的核心理念是提供一个集中式的身份验证服务,使得各个应用能够共享用户的登录状态。其工作流程如下: 1. **登录请求**:当用户尝试访问某个应用时,应用会将用户重定向至CAS的Login URL...

Global site tag (gtag.js) - Google Analytics