码迷,mamicode.com
首页 > 编程语言 > 详细

进程/线程死锁产生的原因以及如何避免死锁

时间:2015-11-16 06:08:32      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:

线程死锁产生的必要条件:

1)互斥条件:一个资源每次只能被一个进程使用。 

2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 

3)不可剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 

4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

 

如何避免死锁,这点我觉得Erlang模型值得参考。在编程过程中,有一些避免死锁的经验:

(1) 等待某个资源时,使用超时机制(例如Erlang中的receive可以加一个超时);

(2) 采用消息通信的通信机制,而不是共享内存的通信机制(例如Erlang中进程和进程之间一般可以通过发送消息来通信)。

进程/线程死锁产生的原因以及如何避免死锁

标签:

原文地址:http://www.cnblogs.com/myPersonalTailor/p/4967921.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!