为什么python中有了GIL还需要 线程锁呢?
两个锁不是同一个层面的:
1、GIL是限制同一个进程中只有一个线程进入Python解释器;
2、线程锁是由于在线程进行数据操作时保证数据操作的安全性(同一个进程中线程之间可以共用信息,如果同时对数据进行操作,则会出现公共数据错误);
其实线程锁完全可以替代GIL,但是Python的后续功能模块都是加在GIL基础上的,所以无法更改或去掉GIL, 这就是Python语言最大的bug…只能用多进程或协程改善,或者直接用其他语言写这部分;
两个锁不是同一个层面的:
1、GIL是限制同一个进程中只有一个线程进入Python解释器;
2、线程锁是由于在线程进行数据操作时保证数据操作的安全性(同一个进程中线程之间可以共用信息,如果同时对数据进行操作,则会出现公共数据错误);
其实线程锁完全可以替代GIL,但是Python的后续功能模块都是加在GIL基础上的,所以无法更改或去掉GIL, 这就是Python语言最大的bug…只能用多进程或协程改善,或者直接用其他语言写这部分;