Где GIL в PyPy?

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

Ответ 1

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

Cheers, fijal