Python需要一个GIL。但是Jython&;IronPython don';T为什么?

Python需要一个GIL。但是Jython&;IronPython don';T为什么?,python,multithreading,ironpython,jython,gil,Python,Multithreading,Ironpython,Jython,Gil,为什么不需要GIL就可以运行Jython和IronPython,而Python(CPython)需要GIL?我猜,因为CPython构建的C库不是线程安全的。而Jython和IronPython分别是针对Java和.Net构建的。部分解释器不是线程安全的,尽管主要是因为通过大量使用锁使它们都是线程安全的会极大地降低单线程的速度。这似乎与使用引用计数的CPython垃圾收集器有关(JVM和CLR没有,因此不需要每次锁定/释放引用计数)。但是,即使有人想到了一个可接受的解决方案并实施了它,第三方库仍

为什么不需要GIL就可以运行Jython和IronPython,而Python(CPython)需要GIL?

我猜,因为CPython构建的C库不是线程安全的。而Jython和IronPython分别是针对Java和.Net构建的。

部分解释器不是线程安全的,尽管主要是因为通过大量使用锁使它们都是线程安全的会极大地降低单线程的速度。这似乎与使用引用计数的CPython垃圾收集器有关(JVM和CLR没有,因此不需要每次锁定/释放引用计数)。但是,即使有人想到了一个可接受的解决方案并实施了它,第三方库仍然会有同样的问题


请注意,用C编写的扩展实际上可以摆脱GIL:

请参见。@Alex Martelli,那篇文章确实问了同样的问题,但没有回答为什么cpython需要GIL。