互斥锁:
类型:pthread_mutex_t
初始化:pthread_mutex_init
加锁:pthread_mutex_lock
解锁:pthread_mutex_unloick
加锁时,如果锁是空闲的,加锁成功,如果锁已经被其他线程加锁成功,当前加锁会阻塞等待,等待到持有锁的线程解锁为止,我们会加锁成功
利用互斥锁加锁
![](https://i-blog.csdnimg.cn/blog_migrate/b4adaa136ca120684a28ef225cb3a313.png)
try锁的使用
![](https://i-blog.csdnimg.cn/blog_migrate/0d3dcb4bf2ded311ba63e19d2b77ae79.png)
什么时候产生死锁
![](https://i-blog.csdnimg.cn/blog_migrate/b193afdc81caaac2456d9fba848d58d8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/55ba166bd8c8e762af55bf0315d4ac92.png)
![](https://i-blog.csdnimg.cn/blog_migrate/f8b8493b2c774c447eb9eb10d2c158e4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/085234c823d02059547577fe7f46bd6b.png)
一种预防死锁的方法 那就是按顺序加锁 比如:
![](https://i-blog.csdnimg.cn/blog_migrate/8b22270f29a5812a6738885ce9492185.png)
死锁产生的四个必要条件
互斥
请求保持
不可剥夺
环路等待
互斥锁:
类型:pthread_mutex_t
初始化:pthread_mutex_init
加锁:pthread_mutex_lock
解锁:pthread_mutex_unloick
加锁时,如果锁是空闲的,加锁成功,如果锁已经被其他线程加锁成功,当前加锁会阻塞等待,等待到持有锁的线程解锁为止,我们会加锁成功
利用互斥锁加锁
try锁的使用
什么时候产生死锁
一种预防死锁的方法 那就是按顺序加锁 比如:
死锁产生的四个必要条件
互斥
请求保持
不可剥夺
环路等待