Python中的GIL如果去掉,是否只要有线程锁就完全不会产生负面影响?
菜鸟,搞不明白为什么有了线程锁还要有 GIL。是因为 GIL 是被动添加上去的吗?
GIL 和线程锁的区别又在哪里呢?
Python中的GIL如果去掉,是否只要有线程锁就完全不会产生负面影响?
8 回复
我无法理解你的问题。
好像明白一些,但是你讲的好高深。。。
简单和你说一下吧,我也不知道
简单说吧,引用计数不去掉,估计 gil 锁就去不掉
保证使用基础结构时不用加锁, 如 dict
不可能,因为 CPython 里面所有的对象都对应底层 C 语言级别 PyObject 结构体,每个对象都有一个引用计数,不用 GIL 没法保证引用计数的变动线程安全。
如果改动的话,Java 就是一个很好的例子,大锁改成细颗粒锁,外加 concurrent 包,同时啊,引用计数应该改成 tracing GC。引用计数在现在的技术下不比 tracing gc 优秀


