PyPy中的全局解释器锁(GIL)在哪里?

15

PyPy的全局解释器锁(GIL)是PyPy在RPython中实现的一部分,还是由translate.py自动添加的呢?换言之,如果我使用RPython编写自己的新语言解释器并通过translate.py运行它,那么是否会被GIL先验地影响,或者这取决于我的解释器代码?

1个回答

12

在PyPy检查中,模块/线程/gil.py插入了GIL处理。这是一项可选的翻译功能,仅在启用线程模块时才添加。也就是说,RPython本身不是线程安全的语言(例如C语言),因此您需要自行正确锁定对象,以便它们不会出现不一致的情况。主要问题将是提供一个线程感知的垃圾收集器,因为我们现在使用的垃圾收集器不是线程安全的,仅添加锁定将从自由线程模型中删除大量好处。

祝好,fijal


1
仅供参考,似乎clojure-py通过生成新进程并通过erlang风格的消息进行通信来解决了这个问题。http://clojure-py.blogspot.com/2012/04/clojure-py-and-distributed-concurrency.html - lobsterism

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接