PyPy的全局解释器锁(GIL)是PyPy在RPython中实现的一部分,还是由translate.py自动添加的呢?换言之,如果我使用RPython编写自己的新语言解释器并通过translate.py运行它,那么是否会被GIL先验地影响,或者这取决于我的解释器代码?
在PyPy检查中,模块/线程/gil.py插入了GIL处理。这是一项可选的翻译功能,仅在启用线程模块时才添加。也就是说,RPython本身不是线程安全的语言(例如C语言),因此您需要自行正确锁定对象,以便它们不会出现不一致的情况。主要问题将是提供一个线程感知的垃圾收集器,因为我们现在使用的垃圾收集器不是线程安全的,仅添加锁定将从自由线程模型中删除大量好处。
祝好,fijal