> Benefits of the GIL > - Increased speed of single-threaded programs. > - Easy integration of C libraries that usually are not thread-safe. > ... This lock(GIL) is necessary mainly because CPython's memory management is not thread-safe.
GIL 的问题是由于当时采用引用计数这样的垃圾回收技术引出的。毕竟要保护好引用数正确,要不就是处处是小锁。要不就是一个大锁(GIL)。当时为了单线程的性能,就用了一个大锁( GIL )。 后面技术发展,大家发现其实 tracing-base 的垃圾回收方案速度也不慢,同时各种优点。于是现代化的 VM 都是 tracing gc 了。 要去掉 GIL,那是得大改啊。
LeeReamond
2021-05-18 20:00:10 +08:00
@ipwx 感谢回复,所以意思是关于 ffi 交互方面,按照原始的 gil 设计,是希望让库设计者在设计库时不必考虑多线程同时操作 python 对象的问题,从而简化 C 扩展的编写难度,后期也是一直为了兼容这个目标,是这个意思吧。