GIL锁与互斥锁

Global Interpreter Lock 全局解释器锁
由于Cpython解释器在运行python文件时,Cpython进程与其运行文件所产生的主进程是一个进程(文件进程相当于Cpython的一个线程),Cpython的GIL锁就产生了(Cpython的一个线程)当python文件中的线程想要执行其代码,必须获得GIL权限,否则不能执行

互斥锁作用:
互斥锁用于python文件运行进程(线程)时,使数据修改等操作的竞争变得有序化

程序运行分析
1、运行一个python进程,内有两个线程Thread-1,Thread-2,共享数据num
2、Thread-1要运行其代码改num,GIL获得,Thread-1可以改,Thread-1获得Lock
3、Thread-1代码在改num前先执行time.sleep(I/O啥的,就是没运行到改num)
4、这时Thread-2要运行其代码去修改num,由于Thread-1是阻塞状态,Thread-2获得GIL
5、由于Thread-1有Lock,所以Thread-2无法更改num
6、这时Thread-1又抢到GIL,由于其保留Lock所以其可以继续运行代码使其修改num
7、当Thread-1执行完释放lock后,Thread-2在获得GIL与Lock后才可对num进行修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值