目标:
    1:知道什么是互斥锁以及怎么使用互斥锁解决资源竞争问题
    2:掌握怎么创建互斥锁

    一:什么是互斥锁?

    答:互斥锁是将线程同步思想落实的一种机制(锁机制),多个线程几乎同时执行同一任务时(注意一定是同一任务!!!),需要进行同步控制!

    互斥锁是最简单的线程同步机制!

    互斥锁两种状态:锁定/非锁定

    互斥锁实现原理:当一个线程执行某个任务时,该线程对这个任务进行锁定,锁定期间不允许其他线程访问执行这个任务,直到该线程执行完当前任务,将锁打开,变为非锁定状态,其他线程才可以对这个任务进行访问执行,这样就避免了资源竞争问题,互斥锁实现了每次只有一个线程执行任务,保证了多线程情况下数据的正确性


    二:创建互斥锁方法—— threading模块的 Lock()类创建互斥锁

    功能:对资源进行锁定以及非锁定,解决多任务(多线程)间资源竞争问题
    **
    创建互斥锁步骤:

    1:创建互斥锁mutex = threading . Lock( )
    2:对资源上锁 mutex . acquire( )
    3:对资源进行解锁 mutex . release( )

    注意事项:

    1:threading模块下的Lock是一个类
    2:子线程访问某个资源竞争任务(全局变量)时,为了避免资源竞争问题,要先对这个资源进行上锁,访问结束进行解锁

    3:
    给多任务加互斥锁时,多个线程全部启动,只是一个线程在处理资源时,另一个线程等待这个资源处理完毕后再次处理,这是和join方法的最大区别(join只启动一个线程**)

    4:利用互斥锁锁资源时,要尽可能少锁竞争资源(代码)

    5:互斥锁应用于多个线程几乎同时执行一个任务时才用互斥锁!**!这是使用互斥锁条件!!

    快速代码体验

    image.png