死锁
- 线程试图对同一个互斥量A加锁两次
- 线程1拥有A锁,请求B锁;线程2拥有B锁,请求获得A锁
解决死锁的方法:
1. 线程试图对同一个互斥量A加锁两次:
转态图:
2. 线程1拥有A锁,请求B锁;线程2拥有B锁,请求获得A锁
状态图:
如何解决:
- 让线程按照一定的顺序去访问共享资源
- 在访问其他锁的时候,需要先将自己的锁解开
- trylock
1. 线程试图对同一个互斥量A加锁两次:
转态图:
2. 线程1拥有A锁,请求B锁;线程2拥有B锁,请求获得A锁
状态图:
如何解决: