学习笔记(26):Python网络编程并发编程-GIL与自定义互斥锁的区别
生活随笔
收集整理的這篇文章主要介紹了
学习笔记(26):Python网络编程并发编程-GIL与自定义互斥锁的区别
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
立即學習:https://edu.csdn.net/course/play/24458/296443?utm_source=blogtoedu
1.GIL的基本概念
答:GIL本質上就是一把鎖,只是他是一把在python解釋器上的鎖
?
2.GIL與互斥鎖的區(qū)別
答:
1)GIL保護的是在python解釋器上的參數(shù),python解釋器上的參數(shù)是所有的線程共享的數(shù)據(jù),不管線程是相同還是不同的進程;
?
2)互斥鎖則是自己定義的線程鎖保護的是自己定義的數(shù)據(jù)
?
3)下圖是只有GIL沒有互斥鎖的情況,假設線程1首先搶到GIL,但是在運行的時候沒能正常運行被強制要求釋放GIL,此時線程1處于阻塞狀態(tài);而這個時候線程2搶到了GIL并且正常運行了,使得自定義數(shù)據(jù)count + 1 =1;正常運行線程2釋放GIL,這個時候線程1再次獲得GIL,重新從解釋器開始運行,而這個時候線程1運行的結果也是count=1,可見自定義的數(shù)據(jù)count沒有受到保護
?
4)GIL與互斥鎖同在:多線程首先搶的是GIL全局解釋器鎖,搶到之后再去搶互斥說
總結
以上是生活随笔為你收集整理的学习笔记(26):Python网络编程并发编程-GIL与自定义互斥锁的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BUUOJ reverse 不一样的fl
- 下一篇: 学习笔记(27):Python网络编程并