5、并发编程中的锁算法与时间戳系统解析

并发编程中的锁算法与时间戳系统解析

在并发编程领域,锁算法和时间戳系统是实现线程同步和互斥的重要工具。本文将深入探讨几种经典的锁算法,包括Lamport的面包店算法,以及相关的时间戳系统,分析它们的原理、特性和局限性。

1. 过滤器锁算法的死锁特性

过滤器锁算法具有死锁-free的特性。在该算法中,若有两个线程A和B,只要A读取到 victim[j] = A ,它就会被阻塞;同理,B读取到 victim[j] = B 时也会被阻塞。但 victim 字段是固定的,不可能同时等于A和B,所以必然有一个线程能进入 j + 1 级别,从而使阻塞线程数量减少到 k - 1 ,这与归纳假设矛盾,因此过滤器锁算法是死锁-free的。

2. 锁算法的公平性

锁算法的饥饿-free特性保证了每个调用 lock() 方法的线程最终都能进入临界区,但它并未对进入的时间做出保证。为了实现更公平的调度,我们将 lock() 方法分为两个部分:
- 门道部分 :执行区间 DA 由有限个步骤组成,要求该部分必须在有限步骤内完成,这一要求被称为有界无等待进展属性。
- 等待部分 :执行区间 WA 可能需要无限个步骤。

公平性的定义为:若线程A在门道部分完成的时间早于线程B开始门道部分的时间,那么A不会被B超

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值