Najlepsze pytania
Chronologia
Czat
Perspektywa
Global Interpreter Lock
Z Wikipedii, wolnej encyklopedii
Remove ads
Global Interpreter Lock (GIL, GVL[1]) – mutex podtrzymywany przez wątek interpretera języka programowania w celu uniemożliwienia współbieżnego wykonywania kodu, nieprzystosowanego do pracy w trybie wielowątkowości. Istnieje dokładnie jedna globalna blokada interpretera dla każdego procesu interpretera.
Aplikacje napisane w językach używających GIL muszą używać osobnych procesów, aby w pełni wykorzystywać potencjał maszyn wieloprocesorowych (każdy proces dysponuje własną, niezależną blokadą).
Dobrą analogią do globalnej blokady interpretera może być spotykana w monolitycznych jądrach systemów operacyjnych globalna blokada jądra, która realizuje niemal identyczne funkcje.
Remove ads
Wady i zalety
Użycie GIL zmniejsza konkurencję pomiędzy wątkami tego samego procesu interpretera. Powoduje to jednak brak wyraźnego zwiększenia wydajności programu, uruchomionego na komputerze wieloprocesorowym[1].
Stworzenie tej blokady oraz dalszą jej obecność tłumaczyć można:
- zwiększeniem wydajności jednowątkowych programów (brak konieczności każdorazowego blokowania dla każdej struktury danych z osobna)[potrzebny przypis]
- łatwą integracją z bibliotekami języka C, które z reguły nie są przystosowane do pracy w trybie wielowątkowym[2][1]
- prostsza implementacja odśmiecania pamięci (za pomocą zliczania referencji, które jest nieodporne na race condition)[2]
Remove ads
Przykłady
Przykłady języków, w których zastosowano GIL:
Przypisy
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads