2012-08-28 21 views
11

Ist der PyPy GIL-Teil der PyPy-Interpreter-Implementierung in RPython, oder wird Translate.py automatisch hinzugefügt? Wenn ich zum Beispiel meinen eigenen neuen Sprachinterpreter in RPython schreiben würde und ihn durch translate.py laufen lassen würde, wäre er a priori der GIL unterstellt, oder würde das an meinem Interpretercode liegen?Wo ist die GIL in PyPy?

Antwort

10

Das GIL-Handling wird in Ihrem PyPy-Checkout nach Modul/thread/gil.py eingefügt. Es ist eine optionale Übersetzungsfunktion und wird nur hinzugefügt, wenn das Thread-Modul aktiviert ist. Das heißt, RPython selbst ist keine threadsichere Sprache (wie zum Beispiel C), Sie müssen also darauf achten, Objekte korrekt zu sperren, damit sie nicht inkonsistent erscheinen. Das Hauptproblem wäre, einen threadfähigen Garbage Collector bereitzustellen, da der, den wir gerade verwenden, nicht threadsicher ist und nur das Hinzufügen einer Sperre würde viele Vorteile aus einem Free-Threading-Modell entfernen. durch Laichen neue Prozesse und die Kommunikation über erlang-Stil Nachrichten

Cheers, Fijal

+0

Nur für das Protokoll, scheint es, dass Clojure-py, um das Problem bekommen hat. http://clojure-py.blogspot.com/2012/04/clojure-py-and-distributed-concurrency.html – lobsterism