手写自旋锁

深藏阁楼爱情的钟 2023-07-02 12:26 106阅读 0赞

一、自旋原理

简单讲:线程尝试获取锁的过程不会阻塞,而是采用循环的方式不断获取锁。

优点: 减少内核态和用户态切换的消耗

缺点: 不停自旋消耗CPU

二、 动手实现简单自旋锁

2.1 利用 AtomicReference 实现

AtomicReference 原子性,底层实现CAS操作,可以对比普通对象的引用。

源码简析:

format_png

从源码中可以看出,AtomicReference 这原子操作底层使用的是unsafe.compareAndSwapObject 来完成,也就支持普通对象的 CAS操作。

  1. AtomicInteger 这个也是原子操作,底层进行CAS比较的是整数,没有AtomicReference 这个更实用。

2.2 手写简单自旋锁源码

format_png 1

2.3 简单进行测试

format_png 2

更多自旋锁参考:

https://blog.csdn.net/qq_17856593/article/details/99679255

发表评论

表情:
评论列表 (有 0 条评论,106人围观)

还没有评论,来说两句吧...

相关阅读

    相关 CAS-

    CAS与自旋锁,借鉴CAS思想 什么是自旋锁? CAS是实现自旋锁的基础,CAS利用CPU指令保证了操作的原子性,以达到锁的效果,至于自旋 锁---字面意思自己旋转。是指

    相关

     一、自旋原理 简单讲:线程尝试获取锁的过程不会阻塞,而是采用循环的方式不断获取锁。 优点: 减少内核态和用户态切换的消耗 缺点: 不停自旋消耗CPU 二、 动手实

    相关

    转自:http://blog.csdn.net/dashuliu/article/details/3299512 一、为什么用自旋锁 操作系统锁机制的基本原理,就是在某个

    相关

    一、什么是自旋锁   一直以为自旋锁也是用于多线程互斥的一种锁,原来不是!   自旋锁是专为防止多处理器并发(实现保护共享资源)而引入的一种锁机制。自旋锁与互斥锁比较类似,