python获取GIL锁的流程
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培训机构:千锋教育。

猜你喜欢LIKE
相关推荐HOT
更多>>
pythonPexpect的工作流程
python中Pexpect的工作流程本文教程操作环境:windows7系统、Python3.9.1,DELLG3电脑。1、工作流程步骤(1)用spawn来执行一个程序;(2)用expect...详情>>
2023-11-08 23:50:45
python面向对象中类如何实现?
python面向对象中类如何实现?一、类的功能1、遵守变量命名的规范;2、大驼峰(有一个或者多个单词构成,每个单词首字母大写,单词跟单词直接相连)...详情>>
2023-11-08 22:49:52
python上下文管理器的用法详解
python上下文管理器的用法详解本文教程操作环境:windows7系统、Python3.9.1,DELLG3电脑。1、说明上下文管理器是一个包装任意代码块的对象。上...详情>>
2023-11-08 21:06:42
python中list与array有什么区别?
python中list与array有什么区别?在python数据类型中,list和array都可以根据索引来取其中的元素,但是list可以用append或者+来新增元素或者添加...详情>>
2023-11-08 20:34:31热门推荐
pythonPexpect的工作流程
沸python继承是什么?
热python面向对象中类如何实现?
热python实现Excel数据的探索和清洗
新python制表符添加空白有哪些方法?
python中如何使用@contextmanage?
python上下文管理器的用法详解
python中list与array有什么区别?
python中time.clock()的使用
python中Array和DataFrame如何相互转换
python的ndarray与pandas的series如何相互转换?
python os.listdir()解决乱码
python中numpy数组合并的两种方法
python中string和float之间的转换
技术干货






