1. 程式人生 > >GIL全域性直譯器鎖

GIL全域性直譯器鎖

併發:進行交替處理多件事情。

並行:多個cpu同時處理多個事,只在多核上能實現。

 GIL是全域性解析器鎖,保證同一時刻只有一個執行緒可以使用cpu,讓我們的多執行緒沒辦法真正實現並行。

在一個程序中只有一個GIL鎖,那個執行緒拿到GIL就可以使用cpu

多個程序有多個GIL鎖

 什麼時候會釋放GIL鎖?

1 、遇到像 i/o操作這種會有時間空閒造成cpu閒置的情況會釋放GIL。

 2 、會有一個專門ticks進行計數,一旦ticks數值達到100,這個時候釋放GIL鎖,執行緒之間開始競爭GIL鎖(說明:ticks這個數值可以進行設定來延長或者縮減獲得GIL鎖的執行緒使用cpu的時間)。

互斥鎖和GIL鎖的關係 

GIL鎖  : 保證同一時刻只有一個執行緒能使用到cpu。

互斥鎖 : 多執行緒時,保證修改共享資料時有序的修改,不會產生資料修改混亂。