目标:
1:知道什么是互斥锁以及怎么使用互斥锁解决资源竞争问题
2:掌握怎么创建互斥锁
一:什么是互斥锁?
答:互斥锁是将线程同步思想落实的一种机制(锁机制),多个线程几乎同时执行同一任务时(注意一定是同一任务!!!),需要进行同步控制!
互斥锁是最简单的线程同步机制!
互斥锁两种状态:锁定/非锁定
互斥锁实现原理:当一个线程执行某个任务时,该线程对这个任务进行锁定,锁定期间不允许其他线程访问执行这个任务,直到该线程执行完当前任务,将锁打开,变为非锁定状态,其他线程才可以对这个任务进行访问执行,这样就避免了资源竞争问题,互斥锁实现了每次只有一个线程执行任务,保证了多线程情况下数据的正确性
二:创建互斥锁方法—— threading模块的 Lock()类创建互斥锁
功能:对资源进行锁定以及非锁定,解决多任务(多线程)间资源竞争问题
**
创建互斥锁步骤:
1:创建互斥锁mutex = threading . Lock( )
2:对资源上锁 mutex . acquire( )
3:对资源进行解锁 mutex . release( )
注意事项:
1:threading模块下的Lock是一个类
2:子线程访问某个资源竞争任务(全局变量)时,为了避免资源竞争问题,要先对这个资源进行上锁,访问结束进行解锁
3:给多任务加互斥锁时,多个线程全部启动,只是一个线程在处理资源时,另一个线程等待这个资源处理完毕后再次处理,这是和join方法的最大区别(join只启动一个线程**)
4:利用互斥锁锁资源时,要尽可能少锁竞争资源(代码)
5:互斥锁应用于多个线程几乎同时执行一个任务时才用互斥锁!**!这是使用互斥锁条件!!
快速代码体验