[发明专利]临界区的控制方法及装置有效
申请号: | 201711376986.2 | 申请日: | 2017-12-19 |
公开(公告)号: | CN107967181B | 公开(公告)日: | 2021-11-16 |
发明(设计)人: | 周应超;张震 | 申请(专利权)人: | 北京小米移动软件有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 北京博思佳知识产权代理有限公司 11415 | 代理人: | 林祥 |
地址: | 100085 北京市海淀区清河*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 临界 控制 方法 装置 | ||
本公开提供一种临界区的控制方法及装置,所述方法包括:获取进入目标临界区的线程的持锁时间;所述目标临界区为临界区中满足预设条件的临界区;确定所述线程是否为目标线程,所述目标线程为持锁时间超过预定时长且满足解锁条件的线程,如果是,则发送通知,以使根据所述通知控制所述目标线程释放锁。本公开中将临界区分为目标临界区和非目标临界区,获取目标临界区中持锁时间超过阈值时间的第一线程,确定所述第一线程中满足解锁条件的目标线程,通过发送通知,以使根据所述通知对所述目标线程进行解锁操作,从而能够保证目标临界区被目标线程占用的时间不超过阈值时间,保证服务器处理业务的效率。
技术领域
本公开涉及资源访问技术领域,尤其涉及临界区的控制方法及装置。
背景技术
现代操作系统采用多道程序设计机制,多个进程可以并发执行,每个进程下又包含有多个线程,CPU在线程之间来回切换,共享某些资源,提高了资源的利用率。
但是,有些共享资源,一次只能提供给一个线程使用,这样的资源称为临界资源。在使用临界资源时,如果不加以互斥访问控制,就会出现非预期的结果。在源代码中,访问临界资源的代码段被称作临界区,当有线程进入临界区时,其他线程必须等待,以确保这些临界资源是被互斥获得使用的。
任何一个线程在进入临界区之前需要对临界区进行加锁操作,成功获得锁的线程可以成功通过“门”进入临界区,其他线程则必须在“门”外等待,直到获得锁的线程从“门”内出来释放锁,之后,其它线程再次竞争锁重复上述过程。
然而,在实际应用中,如果线程在运行的过程中出现一些诸如线程出错、网络断开、服务器宕机等异常情况,则该线程将不能及时的将锁释放,从而导致其他线程只能等到该线程恢复正常并运行完毕后,才能陆续的对该资源进行操作。
由于不同的资源被线程访问的频率不同,有的资源会被线程频繁访问,从而其对应的临界区也将被线程频繁访问,例如对请求进行解析的资源;有的资源仅偶尔被线程访问,从而其对应的临界区也仅偶尔被线程访问,例如错误返回代码。偶尔才会被线程访问的临界区即便被占用较长时间,对服务器处理业务的效率影响不大,可以不对这类临界区的锁进行控制;而频繁被线程访问的临界区若被占用较长时间,将极大的降低服务器处理业务的效率,必须对这类临界区的锁进行控制。显然,对各类临界区采用相同的方法控制锁,降低了服务器处理业务的效率。
发明内容
为克服相关技术中存在的问题,本公开提供了临界区的控制方法及装置。
根据本公开实施例的第一方面,提供一种临界区的控制方法,所述方法包括:
获取进入目标临界区的线程的持锁时间;所述目标临界区为临界区中满足预设条件的临界区;
确定所述线程是否为目标线程,所述目标线程为持锁时间超过预定时长且满足解锁条件的线程,如果是,则发送通知,以使根据所述通知控制所述目标线程释放锁。
可选的,所述获取进入目标临界区的线程的持锁时间,包括:
获取进入临界区的线程的持锁时间;
从所述持锁时间中选取临界区为目标临界区的持锁时间。
可选的,获取进入目标临界区的线程的持锁时间,包括:
确定所述线程进入的临界区是否为目标临界区;如果是,则获取所述线程的持锁时间,如果不是,则不获取所述线程的持锁时间。
可选的,所述持锁时间的获取步骤包括:
从所述线程的堆栈数据中获取锁信息;
从所述锁信息中提取持锁时间。
可选的,所述持锁时间的获取步骤包括:
启动目标服务并从目标服务获取所述线程的持锁时间,所述目标服务用于定时获取所述线程的持锁时间。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京小米移动软件有限公司,未经北京小米移动软件有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711376986.2/2.html,转载请声明来源钻瓜专利网。