目标:
    1:知道什么是多任务死锁
    2:知道多线程要避免死锁情况

    一:什么是死锁?

    答:死锁发生在多线程间,比如两个子线程同时处理一个共同任务,每个子线程都会占用这个任务的一部分资源,且两个子线程间都在等待对方释放其占有的那部分资源,这样就会造成线程死锁(一个子线程将资源锁住,未释放,另一个子线程还在等待这个子线程释放其资源,造成程序无响应、这就叫死锁)

    尽管在多线程间死锁很少发生,但是一旦发生就会造成程序无法响应

    死锁案例代码截图

    image.png

    死锁原理截图

    image.png

    二:多线程怎么避免死锁情况

    答:在函数任务退出之前,就要将锁住的数据进行释放,这样就避免了死锁发生!

    上面案例解决办法:将数据释放语句mutex.release(),放在return语句前面执行即可完成退出程序前对锁住的数据进行释放

    代码演示

    image.png