Python获取GIL锁的流程

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教学

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。