PyPy GIL是RPython中PyPy解释器实现的一部分,还是translate.py自动添加的东西?也就是说,如果我要在RPython中编写我自己的新语言解释器并通过translate.py运行它,它是否会先于GIL,或者这取决于我的解释器代码?
答案 0 :(得分:10)
GIP处理由PyPy checkout中的module / thread / gil.py插入。它是一个可选的转换功能,只有在启用线程模块时才会添加它。也就是说,RPython本身不是一种线程安全的语言(例如C),所以你需要自己正确地锁定对象,这样它们就不会出现不一致的情况。主要的问题是提供一个线程感知的垃圾收集器,因为我们现在使用的垃圾收集器不是线程安全的,只是添加一个锁将从自由线程模型中删除很多好处。
干杯, fijal