【Python高级编程017 ● 多任务编程 ● 死锁】
---------Python基础编程---------
Author : AI菌
【内容讲解】
1.死锁的概念: 一直等待对方释放锁的情景就是死锁。 2.死锁的危害:死锁一旦产生就会造成应用程序的停止响应,应用程序无法再继续往下执行了。 3.解决死锁的方法:使用互斥锁的时候需要注意死锁的问题,要在合适的地方注意释放锁。
【代码演示】
""" 1.死锁的概念: 一直等待对方释放锁的情景就是死锁。 2.死锁的危害:死锁一旦产生就会造成应用程序的停止响应,应用程序无法再继续往下执行了。 3.解决死锁的方法:使用互斥锁的时候需要注意死锁的问题,要在合适的地方注意释放锁。 """ import threading # 创建互斥锁 lock = threading.Lock() # 保证同一时刻只有一个线程根据下标去取值 def get_value(index): # 取值之前先上锁 lock.acquire() my_list = [0, 1, 2] # 判断下标是否越界 if index >= len(my_list): print("下标越界:", index) # 下标越界不能取值,也需要把锁释放,保证后面的线程可以再次取值 # 如果线程一直不释放锁,其他线程就一直等待,形成死锁,程序就无法往下继续执行 lock.release() # 如果下标越界,直接结束函数get_value return # 根据下标获取值 result = my_list[index] print(result) # 取值完成需要释放锁 lock.release() if __name__ == '__main__': # 创建很多线程,同时执行某个任务 for i in range(5): # 创建子线程 sub_thread = threading.Thread(target=get_value, args=(i,)) # 启动线程执行任务 sub_thread.start()
【运行结果】
0 1 2 下标越界: 3 下标越界: 4
【往期精彩】
▷【Python基础编程196 ● 读取文件的4种方式】
▷【Python基础编程197 ● 读取文件的4种方式】
▷【Python基础编程198 ● 读取文件的4种方式】
▷【Python基础编程199 ● Python怎么读/写很大的文件】
▷【Python基础编程200 ● 读取文件的4种方式】
▷【Python基础编程201 ● 读取文件的4种方式】
▷【Python基础编程202 ● 读取文件的4种方式】
▷【Python基础编程203 ● 读取文件的4种方式】
【加群交流】