1.忽略该问题。例如鸵鸟算法,该算法可以应用在极少发生死锁的的情况下。为什么叫鸵鸟算法呢,因为传说中鸵鸟看到危险就把头埋在地底下,可能鸵鸟觉得看不到危险也就没危险了吧。跟掩耳盗铃有点像。
2.检测死锁并且恢复。
3.仔细地对资源进行动态分配,以避免死锁。
4.通过破除死锁四个必要条件之一,来防止死锁产生。
检测死锁的代价很大。所有的类unix系统包括Linux对死锁不作任何处理,这是因为基于成本的考虑.选择鸵鸟算法
不同线程要按照相同顺序进行加解锁。
设置互斥量属性为PTHREAD_MUTEX_ERRORCHECK(如果一个线程试图对一个互斥锁重复锁定,将会返回一个错误代码,从根本上避免死锁)
设置互斥量属性为PTHREAD_MUTEX_RECURSIVE(允许对一个互斥量多次加锁,如:加锁3次,也要解锁3次才能真正释放该锁)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)