首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏小工匠聊架构

    每日一博 - CAS(Compare-And-Swap)原理剖

    文章目录 What's CAS & sun.misc.Unsafe CAS & sun.misc.Unsafe 底层原理剖析 ---- What’s CAS & sun.misc.Unsafe 全称 Compare-And-Swap

    56530发布于 2021-11-10
  • 来自专栏小工匠聊架构

    每日一博 - CAS(Compare-And-Swap)原理剖析

    sun.misc.Unsafe CAS & sun.misc.Unsafe 以AtomicInteger为例底层原理剖析 CAS缺点 ABA 问题 ---- What’s CAS & sun.misc.Unsafe 全称 Compare-And-Swap

    48810编辑于 2022-11-30
  • 来自专栏了凡的专栏

    【并发编程】atomic 如何保证原子操作?分别用那几个方法?

    AddUint32(&x,^uint32(0)) CAS 在CAS的方法签名中,需要提供操作的地址、元数据值、新值,如下所示: // CompareAndSwapInt32 executes the compare-and-swap CompareAndSwapInt32(addr *int32, old, new int32) (swapped bool) // CompareAndSwapInt64 executes the compare-and-swap *addr = new return true } return false 它支持的类型和方法如图所示: // CompareAndSwapInt32 executes the compare-and-swap CompareAndSwapInt32(addr *int32, old, new int32) (swapped bool) // CompareAndSwapInt64 executes the compare-and-swap CompareAndSwapInt64(addr *int64, old, new int64) (swapped bool) // CompareAndSwapUint32 executes the compare-and-swap

    1.5K20编辑于 2022-08-22
  • 来自专栏Lambda

    CAS和ABA问题

    原理 CAS是指Compare-and-swap或Compare-and-Set CAS是一个原子操作,用于多线程环境下的同步。 参考: Compare-and-swap ABA problem

    60020编辑于 2022-04-13
  • 来自专栏javathings

    Java 中什么是无锁编程?

    Compare-and-Swap Java 中的无锁编程本质上就是一个 CAS(compare-and-swap)机制。

    3.3K20发布于 2018-11-13
  • 无锁算法与CAS实现原理【二】

    至少有一个线程能够在有限步骤内完成操作 无死锁:不会出现线程相互等待导致系统停滞 高并发性:允许多个线程同时访问共享资源 典型应用场景包括: 高性能并发数据结构(队列、栈、哈希表等) 实时系统 高并发服务器 CAS(Compare-And-Swap )原理 CAS是Compare-And-Swap的缩写,是一种重要的原子操作指令,其伪代码如下: bool CAS(T* ptr, T oldVal, T newVal) { if (*ptr

    22210编辑于 2025-12-17
  • 来自专栏Java项目实战

    从分段锁到 CAS:ConcurrentHashMap的进化之路

    本文将深入探讨ConcurrentHashMap的设计演进,特别关注为什么在Java 8中放弃了分段锁,以及如何通过CAS(Compare-And-Swap)来解决相关问题。 Java 8的改进:CAS操作为了解决分段锁设计中存在的问题,Java 8中对ConcurrentHashMap进行了重大改进,引入了CAS操作(Compare-And-Swap)。

    1.7K50编辑于 2023-09-25
  • 来自专栏Oracle数据库技术

    高级OWI之Mutex (互斥锁)

    Mutex的结构和获取 Mutex的实现一般需要使用操作系统平台的compare-and-swap (CAS) 操作,对于不支持CAS的操作系统平台如HP-UX PA-RISC,Oracle数据库会使用一段称为 等待事件为cursor: pin S wait on X ・其他某进程由于更新Ref count的操作而以排他模式(X Mode)持有该Mutex时,等待事件为cursor: pin S 参考: compare-and-swap (CAS) https://en.wikipedia.org/wiki/Compare-and-swap Mutex的类型和等待事件 根据Mutex保护的功能不同,可以把Mutex分成不同的类型;

    84120发布于 2020-03-25
  • 来自专栏AI大模型

    Botposter.com集群ETCD2.3.7升级至3.0实录

    API V2与V3区别 事务:ETCD V3提供了多键条件事务(multi-key conditional transactions),应用各种需要使用事务代替原来的Compare-And-Swap操作 Compare-And-Swap 在V2的一种典型用法就是Compare-And-Swap,在Botposter.com中也使用这种方法实现了分布式锁,实现方法是在SET操作时增加下面的操作: &client.SetOptions

    87920发布于 2018-08-27
  • 来自专栏玖叁叁

    kubernetes组件etcd

    etcd 支持基于 CAS(Compare-and-Swap)操作的并发访问,这意味着在多个客户端同时修改同一个键值对时,只有其中一个客户端能够成功修改。这样可以避免数据的冲突和不一致性。 etcd 中的分布式事务是基于 CAS(Compare-and-Swap)操作实现的,这意味着在一个事务中,只有一个客户端能够成功修改同一个键值对。这样可以避免数据的冲突和不一致性。

    93310编辑于 2023-04-28
  • 来自专栏C++

    【在Linux世界中追寻伟大的One Piece】自旋锁

    这通常是通过一个原子操作(如CAS,Compare-And-Swap)来实现的,该操作会检查锁的状态并尝试将其设置为已锁定。 4 -> 纯软件自旋锁类似的原理实现 自旋锁的实现通常使用原子操作来保证操作的原子性,常用的软件实现方式是通过CAS(Compare-And-Swap)指令实现。

    33610编辑于 2024-12-13
  • 来自专栏用户8644135的专栏

    Memcached CAS命令

    Memcached CAS命令 Memcached CAS(Check-And-Set或Compare-And-Swap)命令用于执行一个"检查并设置"的操作 它仅在当前客户端最后一次取值后,该key对应的值没有被其他客户端修改的情况下

    36130发布于 2021-07-05
  • 来自专栏全栈开发日记

    多线程(CAS)

    CAS全称:Compare-And-Swap(比较 and 替换)。 CAS操作是乐观锁的一个实现,而synchronized则是悲观锁的一个实现。乐观锁和悲观锁后面再详细总结。

    30620编辑于 2022-05-13
  • 来自专栏设计模式

    J.U.C 原子类之AtomicReferenceFieldUpdater类详解

    具体来说,AtomicReferenceFieldUpdater通过反射找到目标字段的内存偏移量,然后利用Unsafe类提供的CAS(Compare-And-Swap)操作来原子地更新该字段的值。 原理与实现 AtomicReference:直接对对象引用进行操作,通过CAS(Compare-And-Swap)机制保证操作的原子性。它位于内存中的一个位置,代表了对某个对象的引用。

    35420编辑于 2024-08-22
  • 来自专栏JavaEdge

    Java并发编程实战系列(15)-原子遍历与非阻塞同步机制

    几乎所有现代CPU都有某种形式的原子读-改-写指令,如compare-and-swap等,JVM就是使用这些指令来实现无锁并发。 getAndAddInt时,若系统底层: 支持fetch-and-add,则执行的就是native方法,使用fetch-and-add 不支持,就按照上面getAndAddInt那样,以Java代码方式执行,使用compare-and-swap

    36420编辑于 2022-11-30
  • 来自专栏ops技术分享

    Memcached CAS 命令

    Memcached CAS(Check-And-Set 或 Compare-And-Swap) 命令用于执行一个"检查并设置"的操作 它仅在当前客户端最后一次取值后,该key 对应的值没有被其他客户端修改的情况下

    51210发布于 2021-07-08
  • 来自专栏Java开发

    AtomicInteger类和synchronized关键字的性能对比

    AtomicInteger synchronized 实现原理 基于CAS(Compare-and-Swap

    23810编辑于 2025-07-28
  • 来自专栏程序那些事

    java中的Atomic类

    使用Atomic 通过引入低级别的原子化语义命令(比如compare-and-swap (CAS)),从而能在保证效率的同时保证原子性。 一个标准的CAS包含三个操作: 将要操作的内存地址M。

    83320发布于 2020-07-08
  • 来自专栏Devops专栏

    3.原子变量 CAS算法

    知识点说明 CAS 算法 - CAS (Compare-And-Swap) 是一种硬件对并发的支持,针对多处理器操作而设计的处理器中的一种特殊指令,用于管理对共享数据的并发访问。 CAS(Compare-And-Swap) 算法保证数据变量的原子性 * CAS 算法是硬件对于并发操作的支持 * CAS 包含了三个操作数: * ①内存值 V * ②

    59320编辑于 2022-03-23
  • 来自专栏nginx遇上redis

    DPDK无锁环形缓冲区

    如果指定的数目出队失败,则将最大可用数目对象出队 突发入队 - 如果指定的数目入队失败,则将最大可入队数目对象入队 相比于链表,这个数据结构的优点如下: 更快;只需要一个sizeof(void *)的Compare-And-Swap

    1.3K10编辑于 2022-11-30
领券