立即学习:https://edu.csdn.net/course/play/24458/296443?utm_source=blogtoedu
1.GIL的基本概念
答:GIL本质上就是一把锁,只是他是一把在python解释器上的锁
2.GIL与互斥锁的区别
答:
1)GIL保护的是在python解释器上的参数,python解释器上的参数是所有的线程共享的数据,不管线程是相同还是不同的进程;
2)互斥锁则是自己定义的线程锁保护的是自己定义的数据
3)下图是只有GIL没有互斥锁的情况,假设线程1首先抢到GIL,但是在运行的时候没能正常运行被强制要求释放GIL,此时线程1处于阻塞状态;而这个时候线程2抢到了GIL并且正常运行了,使得自定义数据count + 1 =1;正常运行线程2释放GIL,这个时候线程1再次获得GIL,重新从解释器开始运行,而这个时候线程1运行的结果也是count=1,可见自定义的数据count没有受到保护
4)GIL与互斥锁同在:多线程首先抢的是GIL全局解释器锁,抢到之后再去抢互斥说