Globální zámek interpretu

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Globální zámek interpretu je mechanismus užívaný v interpretech programovacích jazyků k synchronizaci provádění kódu v jednotlivých vláknech tak, že v jednom okamžiku je vykonáván kód pouze v jednom vlákně. Interpret, který zámek používá, umožňuje spuštění kódu z maximálně jednoho vlákna zároveň, i když běží na vícejádrovém procesoru. Mezi populární interprety využívající globální zámek interpretu patří CPython a Ruby MRI.

Výhody

Mezi důvody pro použití globálního zámku interpretu patří:

* vyšší výkon u jednovláknových programů (není nutné získávat nebo uvolňovat zámky pro všechny datové struktury samostatně) * snadná integrace knihoven napsaných v C, které obvykle nelze ve vícevláknových programech bezpečně používat * snadná implementace (mít globální zámek interpretu je mnohem jednodušší než implementovat bezzámkový interpret nebo interpret se specifičtějšími zámky)

Zámek je možné obejít vytvořením nového procesu interpretu pro každé nové vlákno, to je ale u většiny programovacích jazyků příliš náročné na výpočetní výkon.

Nevýhody

Globální zámek interpretu omezuje množství paralelních výpočtů, které může interpretující proces provádět, přesto, že interpretuje vícevláknový program. Pokud je takový program z většiny tvořen interpretovaným kódem a jeho vlákna nečekají na dokončení externích volání mimo interpret, ale na to, až na ně v zámku „přijde řada“, není možné jeho spuštěním na víceprocesorovém stroji dosáhnout výrazného zrychlení. +more Kvůli nutnosti posílat signály mezi vlákny omezovanými rychlostí procesoru může dojít k výraznému zpomalení i v případech s jedním CPU.

Příklady

Mezi implementace programovacích jazyků využívající globální zámek interpretu patří CPython, nejpoužívanější implementace Pythonu, a Ruby MRI, referenční implementace Ruby (zde je zámek nazýván Global VM Lock).

Ekvivalenty těchto jazyků založené na JVM (Jython a JRuby) globální zámek interpretu nevyužívají. Implementace IronPython a IronRuby postavené na Dynamic Language Runtime od společnosti Microsoft také zámek nemají.

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top