并发演进条件

在并发程序中,一个线程的延迟可能阻止其他线程的推进。
1. 无等待
保证方法的每次执行都可以在有限步内完成。就是说不会发生无限等待。
2. 有界无等待
如果上述对完成的步数存在着界限,那么即是有界无等待。注意界限可能与线程数量有关。
3. 集居数无关无等待
如果上述有界无等待的方法,其性能与活动线程数量无关,则该方法为集居数无关的。
4. 无等待对象
若对象的所有方法都是无等待的,则称该对象为无等待的。
5. 无等待类
若类的所有实例都是无等待的,则称该类为无等待的。


** 无等待是一种非阻塞的演进条件。意味着一个线程已经不会阻塞其他线程的执行。


6. 无锁
保证方法的无限次调用都能够在有限步内完成,则称该方法是无锁的。
**无锁不能保证所有线程都能完成。
** 无等待的一定是无锁的,但反之则不然。这是一个稍弱的条件,可能会出现饥饿。因为无锁只关心整体,而无等待需要保证每一次执行都可以完成。


7. 相关演进条件: 无死锁和无饥饿
若对于一个方法,所有有希望进入临界区的线程最终都能够进入临界区,则称其为无饥饿。
保证没有死锁和没有饿死。但是它们作为相关演进条件,只有在保证所有线程都能离开临界区的前提下,才能保证所有线程的推进。若临界区的抢占容易发生,则这两个条件的作用有限。


8. 相关演进条件: 无干扰
隔离即为同一时间只有一个线程在执行该方法。若方法能在有限步内完成,且从任一点开始,它的执行都是隔离的,则称其为无干扰的。
无干扰不需要使用锁,但是也会出现调度的不合理,无法避免饿死。


总结:
只有最强的无等待和无锁条件才能有最好的性质。而后面的条件都依赖于底层平台提供的保证。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值