Hat die V8-Javascript-Engine eine GIL?

8

Ich habe gelesen, dass die V8-Javascript-Engine ein Just-in-Time-Compiler ist. Und das PyPy ist ein Python-Interpreter, der auch ein Just-in-Time-Compiler ist. PyPy ist dafür bekannt, dass es eine GIL bei mehreren Threads gibt.

Hat die V8-Javascript-Engine etwas mit einer globalen Interpreter-Sperre (GIL) zu tun, um mit Web-Worker-Threads umzugehen?

Und haben alle dynamischen Sprachen Probleme beim Umgang mit Multicore und wenn ja, warum haben die JIT-Compiler Probleme mit einer GIL?

    
user782220 19.01.2013, 00:01
quelle

2 Antworten

12

Chromium Web Workers werden zusätzlich zu V8 Isolates implementiert. Jedes Isolate ist im Wesentlichen eine vollständig unabhängige Instanz von V8 VM. Viele Isolate können in demselben Prozess koexistieren und JavaScript-Code gleichzeitig ausführen.

Jedes Isolate kann jedoch immer nur zu einem bestimmten Zeitpunkt im Besitz eines einzigen Threads sein. Es gibt einen Sperrmechanismus auf Isolate-Ebene, den einbetten muss , um den exklusiven Zugriff auf ein Isolate sicherzustellen.

    
Vyacheslav Egorov 19.01.2013, 00:18
quelle
3

Um Ihre letzte Frage zu beantworten, glaube ich nicht, dass GILs etwas sein müssen, das unbedingt in dynamisch interpretierten oder JIT-kompilierten Sprachen vorhanden sein muss. Zum Beispiel hat PyPy einige vorbereitende Arbeiten zur Beseitigung der GIL unter Verwendung von Softwaretransaktionsspeicher durchgeführt. Die Tatsache, dass PyPy und CPython GILs haben, hat mehr mit den Designentscheidungen zu tun, die früher in ihren Historien gemacht wurden, und der Tatsache, dass ihre internen Datenstrukturen nicht threadsicher sind.

    
David Sanders 10.10.2014 00:04
quelle

Tags und Links