Global Interpreter Lock


Global Interpreter Lock w encyklopedii

Z Wikipedii, wolnej encyklopedii Przejdź do nawigacji Przejdź do wyszukiwania

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.

Wady i zalety | edytuj kod

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]

Przykłady | edytuj kod

Przykłady języków, w których zastosowano GIL:

Przypisy | edytuj kod

  1. a b c d ReiR. Odara ReiR., Jose G.J.G. Castanos Jose G.J.G., HisanobuH. Tomari HisanobuH., Eliminating Global Interpreter Locks in Ruby through Hardware Transactional Memory .
  2. a b c RealR. Python RealR., What is the Python Global Interpreter Lock (GIL)? – Real Python, realpython.com [dostęp 2020-01-04]  (ang.).
  3. Nobody understands the GIL - Part 2: Implementation, www.jstorimer.com [dostęp 2020-01-04] .
  4. Multicore OCaml, ocamllabs.io [dostęp 2020-01-04] .
Na podstawie artykułu: "Global Interpreter Lock" pochodzącego z Wikipedii
OryginałEdytujHistoria i autorzy