死锁两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。为什么会产生死锁:① 因为系统资源不足。② 进程运行推进的顺序不合适。 ③ 资源分配不当。产生死锁的条件有四个:① 互斥条件:所谓互斥就是进程在某一时间内独占资源。② 请求与保持条件:一个 ...
分类:
编程语言 时间:
2017-05-22 15:18:52
阅读次数:
217
死锁(deadlock) 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 虽然进程在运行过程中,可能发生死锁,但死锁的发生也必须具备一定的条件,死锁的发生必 ...
分类:
系统相关 时间:
2017-04-16 13:08:02
阅读次数:
285
分布式一致性协议的目的是确定一个不可变变量分布式存储的取值;通过对国内外一致性算法的研究成果和PAXOS协议活锁的分析,发现引入一个角色作为竞争时的代理提交者就可以解决活锁问题,从而在本文引入“代理提交抢占式多数派一致性算法(PPMC)” 详细请看 《改造PAXOS算法消灭活锁 》http://we ...
分类:
编程语言 时间:
2017-02-10 17:50:44
阅读次数:
185
ZooKeeper是以Fast Paxos算法为基础的,Paxos 算法存在活锁的问题,即当有多个proposer交错提交时,有可能互相排斥导致没有一个proposer能提交成功,而Fast Paxos作了一些优化,通过选举产生一个leader (领导者),只有leader才能提交proposer, ...
分类:
其他好文 时间:
2016-10-05 21:59:16
阅读次数:
229
重要概念 同步等待方法返回 异步瞬间返回,继续下一次调用 并发与并行外界表现一致 单核心cpu无法并行,但可以处理并行事务 公共资源或者共享数据 多线程访问时,可能造成临界区数据破坏 非阻塞允许多个线程同时进入临界区 死锁 不能停止服务,静态问题。循环依赖 活锁 动态锁,运行时资源征用 饥饿 缺乏某 ...
分类:
编程语言 时间:
2016-05-15 18:08:50
阅读次数:
238
活锁(livelock)活锁指的是任务或者执行者没有被阻塞,由于某些条件没有满足,导致一直重复尝试,失败,尝试,失败。 活锁和死锁的区别在于,处于活锁的实体是在不断的改变状态,所谓的“活”, 而处于死锁的实体表现为等待;活锁有可能自行解开,死锁则不能。 活锁可以认为是一种特殊的饥饿。 下面这个例子在...
分类:
其他好文 时间:
2015-12-13 15:34:14
阅读次数:
186
以下个人理解,请各位前辈多多指教:死锁:解释:线程A或者B需要过独木桥(使用该进程),而C还没有走完(进程还在占用),于是三方僵死;也可以是没有C的情况下,A和B互不礼让僵死.A和B都认为自己优先级最高应该使用该进程.活锁:解释:线程A和B都需要过桥(都需要使用进程),而都礼让不走(那..
分类:
其他好文 时间:
2015-09-14 12:25:57
阅读次数:
174
1. 活跃性危险死锁(最常见)饥饿 当线程由于无法访问它所需的资源而不能继续执行时,就发生了饥饿。引发饥饿最常见资源就是CPU时钟周期。活锁 活锁指的是任务或者执行者没有被阻塞,由于某些条件没有满足,导致一直重复尝试,失败,尝试,失败。 活锁和死锁的区别在于,处于活锁的实体是在不断...
分类:
编程语言 时间:
2015-04-25 22:33:01
阅读次数:
223
zookeeper采用了fast paxos算法,该算法比paxosa算法好的地方是解决了几个proposer交替发出提案,导致没有一个提案被批准的活锁问题。为什么需要zookeeper?我想有以下几个应用场景:1. 配置管理如果我们有很多服务程序需要有一些配置信息,可以保存在zookeeper的对应的znode中。zookeeper保证多个服务器同时对znode里面信息的修改是一致的。当然也可以...
分类:
其他好文 时间:
2015-02-28 14:40:25
阅读次数:
155
动态的锁顺序死锁
在协作对象之间发生的死锁
死锁的避免与诊断
支持定时的锁
通过线程转储信息来分析死锁
其它活跃性危险
饥饿
糟糕的响应性
活锁...
分类:
编程语言 时间:
2014-09-09 13:13:08
阅读次数:
225