php 文件死锁 死锁的相关知识
你的计划,就像零食,吃到肚子里之后就是个屁。
什么是死锁?
死锁,它是操作系统或软件运行的一种状态:在多任务下,当一个或多个进程等待系统资源而资源又被系统本身或其它进程占用时,就形成了死锁。死锁发生的最常见形式是两个或多个线程等待被另一个线程占用的资源。
死锁产生的条件
1、互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只被一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直到占有资源的进程用完释放;
2、占有且等待:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占用,此时请求进程阻塞,但又对自己已获得的资源保持不放;
3、不可强行占有条件:指进程已获得的资源,在使用结束之前,不能被剥夺,只能在使用结束之后自己释放;
4、循环等待条件:指在发生死锁时,必然存在一个进程——资源的环形链,即进程集合{P0,P1,…,Pn}中的P0正在等待一个P1占用的资源,P1正在等待P2占用的资源,……,Pn正在等待P0占用的资源;
必须具备以上四个条件
哪怎么样才能避免死锁?
1、预防死锁:预防死锁的方法是使四个条件中的第二、三、四个条件之一不能成立,来避免发生死锁。
1)加锁顺序:按同一顺序加锁。
2)加锁顺序:按同一顺序加锁。
2、避免死锁:在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免发生死锁。
3、死锁检测:它主要针对那些无法实现按序加锁并且加锁时限也不可行的情况。
4、死锁解除:这是与检测死锁相配套的一种措施。
5、中止事务:如果无法解除死锁,可以考虑中止其中一个或者多个事务来解除死锁
6、使用超时机制:如果无法解除死锁,可以考虑中止其中一个或者多个事务来解除死锁
7、如果无法解除死锁,可以考虑中止其中一个或者多个事务来解除死锁
怎么处理死锁?
1、剥夺资源:从其它进程剥夺足够数量的资源给死锁进程,以解除死锁状态。
2、撤销进程:最简单的撤销进程的方法是使全部死锁进程都夭折掉;稍微温和一点的方法是按照某种顺序逐个地撤销进程,这只有足够的资源可用。