学习笔记(26):Python网络编程&并发编程-GIL与自定义互斥锁的区别

立即学习: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全局解释器锁,抢到之后再去抢互斥说

发布了39 篇原创文章 · 获赞 11 · 访问量 400

猜你喜欢

转载自blog.csdn.net/qq_45769063/article/details/105074151