在Spinklock中分布式锁的概念

如大家所了解的,锁 = 资源 + 并发控制以我们熟悉的单机锁为例:Spinlock(自旋锁) = BOOL + CAS (乐观锁)Mutex (互斥锁) = BOOL + CAS + 通知 (悲观锁)Spinlock和Mutex所持有的锁是一个互斥量,这个互斥量通常被实现为一个整数值,通过原子操作来控制它的状态。

在 Spinklock 中,线程会循环检查互斥量的状态,直到它处于可用状态。而在 mutex 中,线程会通过系统调用处于阻塞状态,直到互斥量可用才被唤醒。 Spinlock 通过原子的 CAS 指令:当一个线程需要访问共享资源时,它会检查一个标志位,如果标志位为 0 ,则线程可以获取锁,并将标志位设置为 1 。

如果标志位为 1 ,表示锁已经被其他线程占用,当前线程只有一直循环等待,直到它能够成功地将标志位设置 1 。例如 AtomicInteger ,也是通过资源(Interger)+ CAS ,但是不会明确地提示所有权,因此不会被视为一种锁。

如上图所示,任何提供三个特性的服务都可以提供分布式锁的能力,资源可以是文件或者键值对等,通过创建文件,创建键值对等原子操作,通过创建成功的结果来表明所有权的归属,同时通过TTL或者会话来保证锁的可用性。

相关推荐
风吹夏回11 天前
RabbitMQ 核心术语 + Python pika 方法完整讲解
分布式·python·rabbitmq
风吹夏回11 天前
RabbitMQ 三种模式入门:HelloWorld、WorkQueue、PubSub
分布式·rabbitmq·ruby
霸道流氓气质11 天前
分布式追踪与 RequestId 传播完全指南
分布式
cheems952711 天前
[RabbitMQ高级特性] 消息确认机制:从 Ready / Unacked 到 basicAck、basicReject、basicNack 的底层拆解
分布式·rabbitmq·ruby
枫华落尽11 天前
【Hadoop01-完全分布式运行模式】
分布式
隔壁阿布都11 天前
ShedLock 分布式定时任务锁框架介绍
spring boot·分布式
文艺倾年11 天前
【强化学习】数学推导专题,20W字总结(十五)
人工智能·分布式·大模型·强化学习·vibecoding
ACP广源盛1392462567311 天前
GSV9001S@ACP#1080P 级视频处理芯片,物理 AI 普及终端的高性价比选择
大数据·人工智能·分布式·嵌入式硬件·spark
guslegend11 天前
第1章:初始Kafka
分布式·kafka
ACP广源盛1392462567312 天前
GSV5600@ACP#多接口协议转换芯片,物理 AI 便携终端的互联核心
大数据·人工智能·分布式·嵌入式硬件·spark