目标:
1:知道什么是多任务死锁
2:知道多线程要避免死锁情况
一:什么是死锁?
答:死锁发生在多线程间,比如两个子线程同时处理一个共同任务,每个子线程都会占用这个任务的一部分资源,且两个子线程间都在等待对方释放其占有的那部分资源,这样就会造成线程死锁(一个子线程将资源锁住,未释放,另一个子线程还在等待这个子线程释放其资源,造成程序无响应、这就叫死锁)
尽管在多线程间死锁很少发生,但是一旦发生就会造成程序无法响应
死锁案例代码截图
死锁原理截图
二:多线程怎么避免死锁情况
答:在函数任务退出之前,就要将锁住的数据进行释放,这样就避免了死锁发生!
上面案例解决办法:将数据释放语句mutex.release(),放在return语句前面执行即可完成退出程序前对锁住的数据进行释放
代码演示