来自 Java 的 Ruby 和 Python 中的整个全局解释器锁 (GIL) 有点令人吃惊。我已经阅读了一些问题,并在Python 文档中找到了以下摘录:
我们不能摆脱全局解释器锁吗?
全局解释器锁 (GIL) 通常被视为 Python 在高端多处理器服务器机器上部署的障碍,因为多线程 Python 程序有效地只使用一个 CPU,因为坚持(几乎)所有 Python 代码只能在持有 GIL 时运行。
早在 Python 1.5 时代,Greg Stein 实际上实现了一个全面的补丁集(“自由线程”补丁),它移除了 GIL 并用细粒度锁定取而代之。不幸的是,即使在 Windows(锁非常有效)上,它运行普通 Python 代码的速度大约是使用 GIL 的解释器的两倍。在 Linux 上,性能损失更严重,因为 pthread 锁效率不高。
我没有找到性能影响背后的解释。我试图找出技术原因是什么,但找不到任何好的讨论来确定它。
在 Ruby 中类似,在这里我可以找到更少的信息。原因是一样的吗?