300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 学习笔记(26):Python网络编程并发编程-GIL与自定义互斥锁的区别

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

时间:2019-09-19 15:39:21

相关推荐

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。