python獲取GIL鎖的流程
1、流程
(1)先嘗試去獲取互斥量mutex,如果獲取失敗,則循環(huán)監(jiān)控locked狀態(tài),等待持有鎖的線程釋放鎖
(2)如果獲取到互斥量,將locked狀態(tài)置1,表示鎖已被該線程持有,其他線程需要等待,然后釋放互斥量,讓其他線程有機(jī)會(huì)進(jìn)入臨界區(qū)等待上鎖
2、實(shí)例
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鎖的流程,希望對(duì)大家有所幫助。更多Python學(xué)習(xí)推薦:請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。