[发明专利]一种不阻塞线程等待异步消息的方法、系统、服务器及存储介质在审
申请号: | 201910025492.2 | 申请日: | 2019-01-11 |
公开(公告)号: | CN111435314A | 公开(公告)日: | 2020-07-21 |
发明(设计)人: | 刘迟 | 申请(专利权)人: | 武汉瓯越网视有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/54 |
代理公司: | 武汉河山金堂专利事务所(普通合伙) 42212 | 代理人: | 胡清堂;陈懿 |
地址: | 430000 湖北省武汉市东湖新技术开*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 阻塞 线程 等待 异步 消息 方法 系统 服务器 存储 介质 | ||
1.一种不阻塞线程等待异步消息的方法,其特征在于,所述方法包括以下步骤:
S1、在线程中创建任务队列TaskQueue,所述任务队列中设有节点将线程中需要执行的各类任务进行封装,所述各类任务被封装为函数对象Task;
S2、线程开启后创建第一循环函数查找所述任务队列中待执行的Task,并进行执行;
S3、任务列表中执行任一Task时若需要调用异步函数,则在异步函数被调用前,创建互斥对象,开始执行异步函数时,运用互斥对象进行标记,;
S4、在异步函数调用后,创建第二循环函数,通过第二循环函数调用互斥对象进行判断异步函数是否执行完毕,若异步函数未执行完毕,则获取线程任务队列,继续执行步骤S2,若执行完毕,则停止第二循环函数,继续执行调用栈的后续操作。
2.根据权利要求1所述一种不阻塞线程等待异步消息的方法,其特征在于,所述步骤S2中线程中若未找到待执行Task,则进入休眠状态,等待新的Task。
3.根据权利要求1所述一种不阻塞线程等待异步消息的方法,其特征在于,所述步骤S3标记异步函数包括以下步骤:
S31、在异步函数调用前,通过调用互斥对象中Lock函数进行加锁,即标记异步函数开始执行;
S32、当异步函数执行结束后,回调通知消息中调用互斥对象中的UNLock函数进行解锁,即标记异步函数执行完毕。
4.根据权利要求1所述一种不阻塞线程等待异步消息的方法,其特征在于,所述步骤S4通过调用互斥对象中的Try Lock函数,进行非阻塞的判断异步函数是否执行完毕。
5.根据权利要求4所述一种不阻塞线程等待异步消息的方法,其特征在于,判断异步函数执行完毕包括以下步骤:
S41、若Try Lock函数返回False,则表示异步函数尚未执行完毕;
S42、若Try Lock函数返回True,则表示异步函数执行完毕。
6.一种不阻塞线程等待异步消息的系统,其特征在于,所述系统包括创建模块、查找模块、标记模块以及执行模块;
创建模块,用于在线程中创建任务队列TaskQueue,所述任务队列中设有节点将线程中需要执行的各类任务进行封装,所述各类任务被封装为函数对象Task;
查找模块,用于线程开启后创建第一循环函数查找所述任务队列中待执行的Task,并进行执行;
标记模块,用于任务列表中执行任一Task时若需要调用异步函数,则在异步函数被调用前,创建互斥对象,开始执行异步函数时,运用互斥对象进行标记;
执行模块,用于在异步函数调用后,创建第二循环函数,通过第二循环函数调用互斥对象进行判断异步函数是否执行完毕,若异步函数未执行完毕,则获取线程任务队列,继续执行查找模块,若执行完毕,则停止第二循环函数,继续执行调用栈的后续操作。
7.根据权利要求6所述一种不阻塞线程等待异步消息的系统,其特征在于,所述标记模块包括:
Lock模块,用于在异步函数调用前,通过调用互斥对象中Lock函数进行加锁,即标记异步函数开始执行;
UNLock模块,用于当异步函数执行结束后,回调通知消息中调用互斥对象中的UNLock函数进行解锁,即标记异步函数执行完毕。
8.根据权利要求6所述一种不阻塞线程等待异步消息的系统,其特征在于,所述执行模块中包括:
False模块,用于判断若Try Lock函数返回False,则表示异步函数尚未执行完毕;
True模块,用于判断若Try Lock函数返回True,则表示异步函数执行完毕。
9.一种不阻塞线程等待异步消息的系统的服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至5中任一项所述一种不阻塞线程等待异步消息的方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5中任一项所述一种不阻塞线程等待异步消息的方法的步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉瓯越网视有限公司,未经武汉瓯越网视有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910025492.2/1.html,转载请声明来源钻瓜专利网。