[发明专利]一种跟踪任务的线程调度切换的方法、系统、设备和存储介质在审
| 申请号: | 202011009121.4 | 申请日: | 2020-09-23 |
| 公开(公告)号: | CN114253678A | 公开(公告)日: | 2022-03-29 |
| 发明(设计)人: | 周志刚 | 申请(专利权)人: | 武汉斗鱼鱼乐网络科技有限公司 |
| 主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/52;G06F16/22 |
| 代理公司: | 北京众达德权知识产权代理有限公司 11570 | 代理人: | 刘杰 |
| 地址: | 430000 湖北省武汉市东湖新技术开发区软件园东路*** | 国省代码: | 湖北;42 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 跟踪 任务 线程 调度 切换 方法 系统 设备 存储 介质 | ||
本发明提出了一种跟踪任务的线程调度切换的方法、系统、设备和存储介质,所述方法包括:封装一个线程创建接口,利用所述线程创建接口创建线程;利用map存储器和设置线程锁的方式针对所述创建接口创建的线程设置线程名称;检测开发者是否利用所述线程创建接口进行线程建立;设置具有线程数据记录功能的基础类,确定当前任务的线程是否需要进行切换操作;设置异步任务的执行和线程投递,利用异步任务的执行自动完成线程的切换统计。所述系统包括与方法的步骤对应的模块;所述设备包括处理器和存储器。
技术领域
本发明提出了一种跟踪任务的线程调度切换的方法、系统、设备和存储介质,属于数据处理技术领域。
背景技术
对于现有程序都是尽量使用异步任务,使用多线程或者线程池来调度任务的执行,而随着线程池和异步任务的调度否复杂化,往往一个任务背执行过程中会经历那些线程,这样就导致可能很难弄清楚任务的线程之间的各种切换。而一个任务切换不同的线程是需要消耗一定的资源,线程切换需要执行线程上下文的切换工作。因此,需要有一种方法能够知道一个任务从开始到结束经历过哪些线程的执行,并且能够知道从那个线程切换到那个线程,得到这样的线程切换信息后,我们就可以优化我们的任务调度,尽量将任务放入到一个线程从头到尾的执行完成,从而可以加速任务的执行。
发明内容
本发明提供了一种跟踪任务的线程调度切换的方法、系统、设备和存储介质,用以解决现有线程调度过程中,无法获取线程之间的切换信息的问题,所采取的技术方案如下:
一种跟踪任务的线程调度切换的方法、系统、设备和存储介质,所述跟踪任务的线程调度切换的方法包括:
封装一个线程创建接口,利用所述线程创建接口创建线程;
利用map存储器和设置线程锁的方式针对所述创建接口创建的线程设置线程名称;
检测开发者是否利用所述线程创建接口进行线程建立;
设置具有线程数据记录功能的基础类,确定当前任务的线程是否需要进行切换操作;
设置异步任务的执行和线程投递,利用异步任务的执行自动完成线程的切换统计;
其中,所述利用map存储器和设置线程锁的方式针对所述创建接口创建的线程设置线程名称,包括:
使用map存储器来映射线程和线程名称的对应关系,形成存储的映射表;
设置一个线程锁;
获取所述线程对应的id;
利用lambad函数将所述线程名称以参数形式传入
利用所述线程锁中的写锁将mapThread变量写入线程;
存储所述线程的id对应的线程名称,然后执行所述线程的线程函数,所述线程则开始执行对应任务;
并且,设置线程名称的所有逻辑都在宏#ifdefThread_Count中编写。
进一步地,所述的检测开发者是否利用所述线程创建接口进行线程建立,包括:
编写一个hook函数,利用所述hook函数的功能来hook系统的线程创建,并获取线程创建的调用堆栈;
判断所述调用堆栈是否有createThread函数的堆栈调用,如果没有,则说明开发者已创建的线程不是利用所述线程创建接口进行创建的;如果有,则说明开发者已创建的线程是利用所述线程创建接口进行创建的;
当确定开发者不是利用所述线程创建接口进行线程创建时,输出错误信息,提示开发者利用线程创建接口进行线程的创建。
进一步地,所述的设置具有线程数据记录功能的基础类的过程包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉斗鱼鱼乐网络科技有限公司,未经武汉斗鱼鱼乐网络科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011009121.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种APF过采样方法、系统和存储介质
- 下一篇:大型拼接式种植水槽





