死锁
一组进程均占有不会释放的资源,但因互相申请被其他进程所占用不会释放资源,而处于一种永久等待的状态
进程一占有资源A不释放,进程二占有资源B不释放,进程一申请资源B,进程二申请资源A,两个进程都属于阻塞状态
形成死锁的条件:
互斥条件:一个资源每次只能被一个执行流使用
请求与保持条件:一个执行流因请求资源而阻塞时,对已获得资源保持不放
不剥夺条件:一个执行流已获得的资源,在未使用完之前,不能强行剥夺
循环等待条件:若干执行流之间形成一种头尾相接的循环等待关系
同步:保证数据安全(实现锁的状态下)的情况下,我们的线程访问有一定顺序性
线程之间的对共享资源的访问有一定的顺序,如线程一发送数据后,发送信号到线程二,线程二再访问获取数据,实现线程一,二这样的访问顺序
其中这个信号叫条件变量决定线程挂起或者访问
在Linux系统中条件变量的接口
pthread_cond_destroy: 销毁变量
pthread_cond_init: 创建临时变量
pthread_co