线程操作的实现方法和装置制造方法及图纸

技术编号:19489104 阅读:24 留言:0更新日期:2018-11-17 12:02
本发明专利技术公开了线程操作的实现方法和装置。所述方法包括:获取待执行任务的任务信息;根据所述任务信息选取相匹配的任务模板,以及根据所述任务信息和选取的任务模板生成任务;在本线程中执行所述任务,或者通知第一目标线程执行所述任务。该技术方案的有益效果在于,任务模板既支持泛化,比较通用,也支持特化,能够在性能上有所提升,并且对于一个类型的任务可以采用同一任务模板,实现起来简单方便,效率很高。

【技术实现步骤摘要】
线程操作的实现方法和装置
本专利技术涉及计算机
,具体涉及线程操作的实现方法和装置。
技术介绍
线程一般而言是程序运行的最小单元,线程操作虽小,却是程序运行的基础。因此,对线程操作进行性能上的改进一直是需要解决的问题。例如,线程间可能存在需要传递参数的情况,随着程序设计的不断发展,开发者希望能够实现传递的参数种类增多、个数也不固定;线程可能需要发出网络请求,网络请求较多,相应的回调也复杂,在这个过程中可能产生内存泄漏问题,等等。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的线程操作的实现方法和装置。依据本专利技术的一个方面,提供了一种线程操作的实现方法,包括:获取待执行任务的任务信息;根据所述任务信息选取相匹配的任务模板,以及根据所述任务信息和选取的任务模板生成任务;在本线程中执行所述任务,或者通知第一目标线程执行所述任务。可选地,所述待执行任务为异步任务,与所述任务信息匹配的任务模板为异步任务模板。可选地,所述异步任务模板是从指定的异步任务类中获得的,所述异步任务类继承自CWindowImpl类。可选地,所述任务信息包括可调用对象和/或参数,所述根据所述任务信息和选取的任务模板生成任务包括:将所述任务信息按所述异步任务模板封装为异步任务对象。可选地,所述将所述任务信息按所述异步任务模板封装为异步任务对象包括:利用绑定机制实现对所述异步任务对象的封装。可选地,所述通知第一目标线程执行所述任务包括:将所述异步任务对象放入所述第一目标线程的消息队列,以使所述第一目标线程在接收到执行信号从所述消息队列中取出所述异步任务对象,执行所述异步任务。可选地,所述任务信息包括执行结果捕捉函数;当所述执行结果捕获函数被第一目标线程调用时,在第二目标线程中执行所述执行结果捕获函数,以从所述第一目标线程捕获所述异步任务的执行结果。可选地,所述执行结果捕获函数是通过对lambda表达式进行封装得到的。可选地,所述执行结果捕获函数包括类型萃取函数、第一捕获函数和第二捕获函数,所述第一捕获函数和第二捕获函数为重载函数;所述类型萃取函数用于对所述执行结果进行类型萃取,若萃取出的类型原型不包含参数,则利用第一捕获函数进行捕获,若萃取出的类型原型包含参数,则利用第二捕获函数进行捕获。可选地,该方法还包括:判断用于执行所述任务的第一目标线程是否存在,若不存在,则初始化用于执行所述任务的第一目标线程。可选地,所述任务为网络请求任务;所述根据所述任务信息选取相匹配的任务模板,以及根据所述任务信息和选取的任务模板生成任务包括:将网络请求的URL地址和回调函数通过网络请求模板封装为一个网络请求。可选地,所述网络请求模板是通过加载的网络请求静态库获得的。可选地,所述网络请求模板包括如下的一种或多种:从内存读取数据的特化模板;从文件读取数据的特化模板;向内存写入数据的特化模板;向文件写入数据的特化模板。可选地,所述任务模板包括可变参数模板;所述据所述任务信息和选取的任务模板生成任务包括:对所述任务信息进行类型萃取,将任务信息转化为通用类型的若干个参数;根据所述若干个参数和所述可变参数模板生成任务。可选地,所述任务信息包括如下的一种或多种:基本类型对象、lambda表达式、指针、智能指针、普通函数。依据本专利技术的另一方面,提供了一种线程操作的实现装置,包括:任务信息获取单元,适于获取待执行任务的任务信息;任务生成单元,适于根据所述任务信息选取相匹配的任务模板,以及根据所述任务信息和选取的任务模板生成任务;执行单元,适于在本线程中执行所述任务,或者通知第一目标线程执行所述任务。可选地,所述待执行任务为异步任务,与所述任务信息匹配的任务模板为异步任务模板。可选地,所述异步任务模板是从指定的异步任务类中获得的,所述异步任务类继承自CWindowImpl类。可选地,所述任务信息包括可调用对象和/或参数;所述任务生成单元,适于将所述任务信息按所述异步任务模板封装为异步任务对象。可选地,所述任务生成单元,适于利用绑定机制实现对所述异步任务对象的封装。可选地,所述执行单元,适于将所述异步任务对象放入所述第一目标线程的消息队列,以使所述第一目标线程在接收到执行信号从所述消息队列中取出所述异步任务对象,执行所述异步任务。可选地,所述任务信息包括执行结果捕捉函数;当所述执行结果捕获函数被第一目标线程调用时,在第二目标线程中执行所述执行结果捕获函数,以从所述第一目标线程捕获所述异步任务的执行结果。可选地,所述执行结果捕获函数是通过对lambda表达式进行封装得到的。可选地,所述执行结果捕获函数包括类型萃取函数、第一捕获函数和第二捕获函数,所述第一捕获函数和第二捕获函数为重载函数;所述类型萃取函数用于对所述执行结果进行类型萃取,若萃取出的类型原型不包含参数,则利用第一捕获函数进行捕获,若萃取出的类型原型包含参数,则利用第二捕获函数进行捕获。可选地,所述执行单元,还适于判断用于执行所述任务的第一目标线程是否存在,若不存在,则初始化用于执行所述任务的第一目标线程。可选地,所述任务为网络请求任务;所述任务生成单元,适于将网络请求的URL地址和回调函数通过网络请求模板封装为一个网络请求。可选地,所述网络请求模板是通过加载的网络请求静态库获得的。可选地,所述网络请求模板包括如下的一种或多种:从内存读取数据的特化模板;从文件读取数据的特化模板;向内存写入数据的特化模板;向文件写入数据的特化模板。可选地,所述任务模板包括可变参数模板;所述任务生成单元,适于对所述任务信息进行类型萃取,将任务信息转化为通用类型的若干个参数,根据所述若干个参数和所述可变参数模板生成任务。可选地,所述任务信息包括如下的一种或多种:基本类型对象、lambda表达式、指针、智能指针、普通函数。依据本专利技术的又一方面,提供了一种智能终端,包括:处理器;以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行如上述任一所述的方法。依据本专利技术的再一方面,提供了一种计算机可读存储介质,其中,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被处理器执行时,实现如上述任一所述的方法。由上述可知,本专利技术的技术方案,在获取到待执行任务的任务信息后,可以选取与之匹配的任务模板来生成任务,以便在本线程或其他线程来进行执行。该技术方案的有益效果在于,任务模板既支持泛化,比较通用,也支持特化,能够在性能上有所提升,并且对于一个类型的任务可以采用同一任务模板,实现起来简单方便,效率很高。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1示出了根据本专利技术一个实施例的一种线程操作的实现方法的流程示意图;图2示出了根据本专利技术一个实施例的一种线程操作的实现装置的结构示意图;图3示出了根据本专利技术一个本文档来自技高网...

【技术保护点】
1.一种线程操作的实现方法,包括:获取待执行任务的任务信息;根据所述任务信息选取相匹配的任务模板,以及根据所述任务信息和选取的任务模板生成任务;在本线程中执行所述任务,或者通知第一目标线程执行所述任务。

【技术特征摘要】
1.一种线程操作的实现方法,包括:获取待执行任务的任务信息;根据所述任务信息选取相匹配的任务模板,以及根据所述任务信息和选取的任务模板生成任务;在本线程中执行所述任务,或者通知第一目标线程执行所述任务。2.如权利要求1所述的方法,其中,所述待执行任务为异步任务,与所述任务信息匹配的任务模板为异步任务模板。3.如权利要求2所述的方法,其中,所述异步任务模板是从指定的异步任务类中获得的,所述异步任务类继承自CWindowImpl类。4.如权利要求2所述的方法,其中,所述任务信息包括可调用对象和/或参数,所述根据所述任务信息和选取的任务模板生成任务包括:将所述任务信息按所述异步任务模板封装为异步任务对象。5.一种线程操作的实现装置,包括:任务信息获取单元,适于获取待执行任务的任务信息;任务生成单元,适于根据所述任务信息选取相匹配的任务模板,以及根据所述任务信息和选取的任务模...

【专利技术属性】
技术研发人员:赵肖勇康高杰
申请(专利权)人:北京奇虎科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1