当前位置: 首页 > 图灵资讯 > 行业资讯> Python获取GIL锁的流程

Python获取GIL锁的流程

来源:图灵python
时间: 2024-08-21 22:24:03

1、流程

(1)首先尝试获取相互排斥的mutex,如果获取失败,循环监控locked状态,等待持锁线程释放锁。

(2)如果获得相互排斥,将locked状态放置在1中,表示锁已被该线程持有,其他线程需要等待,然后释放相互排斥,以便其他线程有机会进入临界区域等待锁

2、实例

intPyThread_acquire_lock(PyThread_type_locklock,intwaitflag)
{
intsuccess;
pthread_lock*thelock=(pthread_lock*)lock;
intstatus,error=0;
status=pthread_mutex_lock(&thelock->mut);
success=thelock->locked==0;
if(!success&&waitflag){
while(thelock->locked){
status=pthread_cond_wait(&thelock->lock_released,
&thelock->mut);
}
success=1;
}
if(success)thelock->locked=1;
status=pthread_mutex_unlock(&thelock->mut);
if(error)success=0;
returnsuccess;
}

以上是Python获取GIL锁的过程,希望对大家有所帮助。更多Python学习推荐:python教学

本文教程操作环境:windows7系统Python 3.9.1,DELL G3电脑。