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學習推薦:請關注IT培訓機構:千鋒教育。