立即學習: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全局解釋器鎖,搶到之后再去搶互斥說