目录
1.死锁概念
2.接口
3.代码展示
1.死锁概念
死锁的四个必要条件(必须同时满足):
1.互斥条件:一个资源每次只能被一个执行流使用(前提)。
2.请求与保持条件:一个执行流因请求资源而堵塞时,对已获得的资源保持不放(原则)。
3.不剥夺条件:一个执行流已获得的资源,在未使用完之前,不能强行剥夺(原则)。
4.循环等待条件:若干执行流之间形循环等待资源的关系(重要条件)。
想要破坏死锁就要破坏其中一个条件。
注意:只有一个线程也是可以死锁的!(线程1同时申请两次同一个锁)
2.接口
为了解决死锁的情况有很多种,系统提供给我们一类接口来解决:
让线程进入等待队列,等待的同时会释放锁,所以这个参数中有一个是mutex。
解放线程的等待队列
3.代码展示
pthread_cond_join函数
pthread_cond_broadcast函数