Где GIL в PyPy?

Является ли PyPy GIL частью реализации интерпретатора PyPy в RPython или это то, что translate.py добавляет автоматически? то есть, если бы я написал свой собственный интерпретатор нового языка в RPython и прогнал его через translate.py, подпадал бы он под действие GIL априори или это зависело бы от моего кода интерпретатора?


person lobsterism    schedule 28.08.2012    source источник


Ответы (1)


Обработка GIL вставляется модулем /thread/gil.py в вашу проверку PyPy. Это необязательная функция перевода, и она добавляется только при включенном модуле потока. Тем не менее, RPython сам по себе не является потокобезопасным языком (как, например, C), поэтому вам нужно будет позаботиться о том, чтобы правильно блокировать объекты, чтобы они не оказались несогласованными. Основной проблемой было бы создание сборщика мусора с поддержкой потоков, потому что тот, который мы используем сейчас, не является потокобезопасным, и простое добавление блокировки лишило бы многопотоковую модель многих преимуществ.

Ура, фиджал

person fijal    schedule 31.08.2012
comment
Просто для протокола: кажется, что clojure-py удалось обойти проблему, создав новые процессы и обмениваясь сообщениями в стиле erlang. clojure-py.blogspot.com/2012/ 04/ - person lobsterism; 05.09.2012