[发明专利]函数调用管理方法及装置有效
申请号: | 201810252545.X | 申请日: | 2018-03-26 |
公开(公告)号: | CN108491276B | 公开(公告)日: | 2021-04-27 |
发明(设计)人: | 杨亮;张文明;陈少杰 | 申请(专利权)人: | 武汉斗鱼网络科技有限公司 |
主分类号: | G06F9/52 | 分类号: | G06F9/52 |
代理公司: | 北京超凡志成知识产权代理事务所(普通合伙) 11371 | 代理人: | 吴迪 |
地址: | 430000 湖北省武汉市东湖新技术*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 函数 调用 管理 方法 装置 | ||
本申请提供一种函数调用管理方法及装置,通过使用一个执行指令实现InterlockedCompareExchange函数进行原子性操作对目标函数的调用状态标志值进行判断修改的方式,代替原来使用多个执行指令通过系统互斥体资源实现自旋锁判断逻辑。如此,在不使用系统互斥体资源的情况下实现了自旋锁功能,更加的节省系统资源,并且处理效率更高。
技术领域
本发明涉及数据处理技术领域,具体而言,涉及一种函数调用管理方法及装置。
背景技术
在电子设备运行中,可能涉及多个线程均需要基调用某个函数。为了防止不同进行同时该函数进行盗用,造成相关处理逻辑或参数的冲突,保护相关的代码或者变量,在多线程中通常采用锁机制来解决。例如在Windows系统中可以自旋锁(SpinLock)、互斥体(Mutex)、信号量(Semaphore)等方法来实现锁功能。以自旋锁为例,自旋锁机制一般提供加锁的lock函数,以及解锁的unlock函数,利用lock函数对需要保护的函数进行加锁保护,这样其他线程运行到调用该函数地址时,就会被阻塞;在线程完成对函数的调用,在利用unlock函数对该函数进行解锁。这样,对于多个同时运行的线程来说,实现了只有一个线程能够访问到具有自旋锁机制的函数。但是在现有技术的自旋锁机制中,通过一个保护锁计数变量来表征函数是否正在读写,这就需要依赖运行系统资源的互斥体变量来保护锁计数变量,虽然实现了自旋锁功能,但是需要创建多个自旋锁时,就会创建同等函数量的系统互斥体资源,从处理效率和对系统资源的占用上来说,都造成了较大的负担。
发明内容
为了克服现有技术中的上述不足,本发明的目的在于提供一种函数调用管理方法,所述方法包括:
目标线程循环地获得目标函数的调用权限的调用状态标志值,通过InterlockedCompareExchange函数执行原子性操作检测所述调用状态标志值是否为第一预设值;其中,当所述调用状态标志值为第一预设值时,表示该目标函数未被其他线程调用;当所述调用状态标志值为第二预设值时,表示该目标函数整在被其他线程调用;
若所述调用状态标志值所述为第一预设值,则在InterlockedCompareExchange函数执行的原子性操作中,将所述第二预设值赋值给所述调用状态标志值,并将所述第一预设值赋值给一个中间标志值;
若所述调用状态标志值不为第一预设值,则在InterlockedCompareExchange函数执行的原子性操作中,将所述第二预设值赋值给所述中间标志值;
检测所述中间标志值是否为所述第一预设值;
若所述中间标志值为所述第一预设值,则由该目标线程对所述目标函数进行读写操作;
若所述中间标志值不为所述第一预设值,则继续循环执行检测所述调用状态标志值是否为第一预设值的步骤及该步骤之后的步骤。
可选地,在上述方法中,在所述由该目标线程对所述目标函数进行读写操作的步骤之后,所述方法还包括:
通过InterlockedCompareExchange函数执行原子性操作,将所述第一预设值赋值给所述目标函数的调用状态标志值。
可选地,在上述方法中,所述方法还包括:
在所述目标函数初始化时,将该目标函数的调用状态标志值配置为所述第一预设值。
可选地,在上述方法中,所述若所述中间标志值为所述第一预设值,则由该目标线程对所述目标函数进行读写操作的步骤,包括:
若所述中间标志值为所述第一预设值,跳出获得目标函数的调用权限的调用状态标志值,通过InterlockedCompareExchange函数执行原子性操作检测所述调用状态标志值是否为所述第一预设值的循环,并由该目标线程对所述目标函数进行读写操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉斗鱼网络科技有限公司,未经武汉斗鱼网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810252545.X/2.html,转载请声明来源钻瓜专利网。