CN104572284B - 任务实现装置和方法、以及应用 - Google Patents
任务实现装置和方法、以及应用 Download PDFInfo
- Publication number
- CN104572284B CN104572284B CN201510009759.0A CN201510009759A CN104572284B CN 104572284 B CN104572284 B CN 104572284B CN 201510009759 A CN201510009759 A CN 201510009759A CN 104572284 B CN104572284 B CN 104572284B
- Authority
- CN
- China
- Prior art keywords
- task
- request
- result
- thread
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Telephonic Communication Services (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种任务实现装置,所述任务是主程序运行过程中需要执行的一个或者多个任务,所述主程序在主线程上运行,所述任务在一个或多个次线程上执行,所述装置包括:任务执行模块,其适于在所述次线程上运行以实现预定任务,产生任务结果;调用模块,其适于主程序在主线程上运行时调用所述任务执行模块;启动模块,其适于启动运行所述任务执行模块的次线程;以及获取模块,其适于使所述主程序获得所述任务结果。另外,本发明还提供一种任务实现方法以及使用所述任务实现装置的应用。利用本发明,一方面可以减少主程序本身的负荷,另一方面操作更灵活,实现更容易,并且可以使程序兼容性更好。
Description
技术领域
本发明涉及计算机应用技术领域,尤其涉及任务实现装置和方法、以及应用。
背景技术
随着计算机和网络技术的迅速发展,诸如具有多种应用的智能手机、平板电脑等移动终端越来越普及并成为人们生活中必不可少的信息获取工具,人们可以在移动终端上安装并使用多种应用,例如手机游戏、聊天工具、视频播放、音乐播放等等。许多应用由于自身设计的限制,在某种程度上限制了应用的功能的扩展,而且使应用在性能、兼容性方面不够好。
例如手机游戏通常使用游戏引擎自带的功能进行截图,但是受游戏引擎的限制,截图方法不具有通用性,例如,U3D的截图方法只能用于U3D,Cocos2DX的截图方式只用于Cocos2DX。另外,有些游戏引擎中需要处理线程的问题,但是只有OpenGL线程才能处理截图相关功能。还有,有些游戏引擎对某些功能的兼容性方面不够好,例如在某个版本、某个设备下,截图功能失效。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的任务实现装置和方法、以及应用。
依据本发明的一个方面,提供了一种任务实现装置,所述任务是主程序运行过程中需要执行的一个或者多个任务,所述主程序在主线程上运行,所述任务在一个或多个次线程上执行,所述装置包括:任务执行模块,其适于在所述次线程上运行以实现预定任务,产生任务结果;调用模块,其适于主程序在主线程上运行时调用所述任务执行模块;启动模块,其适于启动运行所述任务执行模块的次线程;以及获取模块,其适于使所述主程序获得所述任务结果。
可选地,所述任务执行模块包括请求查询单元和执行单元,所述请求查询单元适于查询来自主线程发出的执行所述预定任务的请求。所述执行单元适于在所述请求查询单元查询到执行所述预定任务的请求的情况下执行所述预定任务并产生所述任务结果。
根据本发明的另一方面,提供一种任务实现方法,所述任务是主程序运行过程中需要执行的一个或者多个任务,所述主程序在主线程上运行,所述任务在一个或多个次线程上执行,所述方法包括:所述主程序调用在所述次线程上运行的任务执行程序,所述任务执行程序执行一预定任务;启动运行所述任务执行程序的次线程;所述任务执行程序运行而产生执行结果;所述主程序获取所述执行结果。
可选地,所述任务执行程序运行而产生执行结果的步骤包括:查询是否存在来自主线程发出的执行所述预定任务的请求;在查询到执行所述预定任务的请求时执行所述预定任务并产生所述任务结果。
根据本发明的又一方面,提供一种应用,其主程序在主线程上运行,所述应用在运行时执行一个或者多个任务,所述任务在一个或多个次线程上执行,所述应用包括权利要求1-7中任何一项所述的任务实现装置。利用本发明的一方面可以减少主程序本身的负荷,另一方面操作更灵活,实现更容易,并且可以使程序兼容性更好。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明的一个实施例的任务实现装置的方框示意图;以及
图2示出了根据本发明的另一个实施例的任务实现方法的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明提供的任务实现装置主要针对某一任务在同一线程、同一应用、或者同一网络平台中不能实现,但在其它线程、其它应用、或者其它网络平台中能够实现时,调用在其它线程、其它应用、或者其它平台上的任务执行程序,执行并将其任务结果发送给原线程、原应用、或者原网络平台来使用的情形。
下面以任务在同一应用的不同线程之间实现为例进行说明。这里所说的线程包括执行应用的主线程以及除了主线程之外的其它线程,为了与主线程进行区分,将除主线程之外的其它线程称之为次线程。
图1示出了根据本发明的一种实施例的任务实现装置的方框示意图。如图1所示,任务实现装置100包括任务执行模块110、调用模块120、启动模块130、以及获取模块140。
其中,调用模块120适于应用主程序在主线程上运行时调用实现某一预定任务的任务执行模块110,通常以发出一个请求的方式开始调用。启动模块130则启动运行所述任务执行模块110的次线程,以使所述任务执行模块110开始运行。
任务执行模块110在应用的次线程中执行某一预定任务的任务执行程序,以实现某一预定任务,产生任务结果。任务执行模块110针对不同的预定任务,可以有多个,不同的任务执行模块110执行不同的预定任务。在图1中,为了简洁起见,只示出了一个任务执行模块110。
具体地,任务执行模块110可以包括请求查询单元111和执行单元112。其中,请求查询单元111适于查询来自主线程发出的执行所述预定任务的请求,例如应用主程序在主线程上运行时发出的更新某一手机游戏的功能的请求、游戏截图的请求等等。由于不同的请求要执行的预定任务由不同的任务执行模块110来执行,所以每一任务执行模块110的请求查询单元111定时查询来自主线程的请求中是否存在执行其对应预定任务的请求。执行单元112适于在请求查询单元111查询到执行所述预定任务的请求的情况下在相应的次线程上执行所述预定任务并获得任务结果。
下面主要以移动终端为智能手机、应用为安装在智能手机中的手机游戏为例进行说明。在这个例子中,只包含执行游戏截图这一个预定任务的任务执行模块110。
通常,手机游戏在启动时,会启动主线程,游戏的主程序在主线程上运行。游戏玩家在玩手机游戏的过程中,可能会与其它游戏玩家讨论、分享一些玩游戏的技巧,为了交流充分时,可能需要对游戏的某一画面执行截取的操作,由于游戏截图在主线程上无法实现,需要在OpenGL这一次线程上来实现,因此,调用模块120会调用执行游戏截图这一预定任务的任务执行模块110,发出执行游戏截图这一预定任务的请求。例如,当游戏玩家点击游戏显示界面上的“游戏截图”的按钮时,即发送了一个“游戏截图”的请求。启动模块130会启动执行游戏截图的这一预定任务的OpenGL线程。执行游戏截图的任务执行模块110的请求查询单元111查询是否存在执行游戏截图的请求,当查询到存在执行游戏截图的请求时,执行单元112执行游戏截图这一任务执行程序,产生所需的游戏截图的任务结果,并通知获取模块140游戏截图完成。然后获取模块140获取所述游戏截图,并将所述游戏截图提供给所述应用主程序,从而使得所述应用能够实现获得游戏截图的功能。
可选地,本发明的任务执行装置100还包括请求管理模块150。请求管理模块150适于存放所述主线程和所述次线程发出的请求,供相应的模块或部件查询所述请求。这一方面可以使得对同一任务执行模块110的多个请求进行排队,依次执行;另一方面,当存在大量的请求时,可以统一存放在请求管理模块150,便于各个任务执行模块定时去查询,例如通过轮询的方式不断查询是否有需要执行其的请求。例如,调用模块120通过主线程发出的游戏截图的请求就可以存放在请求管理模块150中。
可选地,本发明的任务执行装置100还包括任务结果管理模块160。任务结果管理模块160适于存放所获得的任务结果,可以由移动终端本地的存储单元或者缓存单元来实现。当任务执行模块110执行预定任务而获得任务结果时,将所述任务结果统一存放在任务结果管理模块160中。获取模块140查询任务结果管理模块160,确定是否有预定任务的执行结果,如果有,则从任务结果管理模块160获取任务结果,提供给应用主程序使用。所述执行单元112也可以主动通知获取模块140所述预定任务已经完成,并告知其从哪里获取所述预定任务的执行结果。通过将任务结果统一存放在任务结果管理模块160中,在同一任务执行程序执行多次获得多个任务结果时,可以将多个任务结果排成队列消息,依次提供给获取模块140;另外,当有多个任务执行模块110产生的若干任务结果时,也便于获取模块140依次获取各个任务结果,不会出现混乱情形。
另外,本发明还可以包括设置模块170。设置模块170适于设置所述调用所述任务执行模块110的请求的状态。具体地,当所述请求产生时,在请求管理模块150中将所述请求的状态设置为“可被访问或可被读取的状态”,例如设置为“true”,这样,当任务执行模块110或者其请求查询单元111查询请求管理模块150,可以查询所有处于“可被访问的状态”的请求,并根据该请求而执行相应的任务执行模块110。当所述请求的预定任务执行完毕并已获得任务结果时,将请求管理模块150中所述请求的状态修改为“不可被访问的状态或者不可被读取”,例如修改为“fa l se”,即清除该游戏截图请求,这样,当任务执行模块110或者其请求查询单元111查询请求管理模块150,已经被响应的请求就不会再次被查询,从而避免同一请求被重复执行。
本发明还提供一种任务实现方法。所述任务是主程序运行过程中需要执行的一个或者多个任务,所述主程序在主线程上运行,所述任务在一个或多个次线程上执行。
下面以任务在同一应用的不同线程之间实现为例进行说明。图2示出了根据本发明的一种任务实现方法。如图2所示,本发明的方法200在应用主线程与次线程之间执行,从而为该应用实现一预定的扩展功能。
本发明的方法200始于步骤S210,在步骤S210,所述应用运行时调用任务执行程序,所述应用在主线程上运行,所述任务执行程序在次线程上执行一预定任务。例如,所述应用为一网络游戏平台提供的网络游戏,该网络游戏在游戏客户端(即移动终端,例如智能手机)侧下载、安装并在游戏客户端侧运行。所述任务执行程序嵌入在游戏的SDK中,但在游戏客户端的次线程上才可以执行,例如所述任务执行程序为执行游戏截图的程序,用于在网络游戏运行过程中对游戏画面进行截图。当网络游戏在游戏客户端侧运行时,根据用户的需求,可能会调用执行游戏截图的程序。
接下来,执行步骤S220,启动运行所述任务执行程序的次线程。由于该任务执行程序不能在主线程上执行,而是在某一次线程上执行,因此,需要在执行所述任务执行程序前启动相应的次线程。
例如,对于网络游戏,其具有多个次线程,当需要执行游戏截图的程序时,需要启动游戏的OpenGL线程,以在OpenGL线程上执行游戏截图程序。
接下来,在步骤S230,所述任务执行程序执行其查询功能,查询是否存在执行所述预定任务的请求。例如,当在网络游戏中设置有游戏截图功能时,会在移动终端的游戏界面上设置“游戏截图”按钮,这样,当网络游戏在移动终端运行时,在移动终端的游戏界面上会显示出“游戏截图”按钮。当玩家点击该“游戏截图”按钮时,就会产生一个“游戏截图”的请求。例如,一个“游戏截图”的请求的创建和发送可以由如下代码实现:
//创建一个截图请求
ScreenshotRequest request=new ScreenshotRequest()
//填写请求的具体内容
request.imageWidth=480;//图片宽度
request.imageHeight=800;//图片高度
request.imageType=”JPEG”;//图片类型
//发送请求
KT.sendScreenshotRequest(request)
所述用于游戏截图的任务执行程序会不断地查询是否存在“游戏截图”请求。当查询到存在“游戏截图”请求时,则执行步骤S240;如果没有查询到“游戏截图”请求,则重新执行步骤S230,重新查询是否存在“游戏截图”请求,在步骤S230中的查询可以按预定时间间隔进行的轮询。
可选地,在步骤S210后还可以包括一步骤S212(在图2中未示出):让所述调用任务执行程序的请求存放在一个请求管理中心中,这样,在步骤S230中,所述任务执行程序则可以在请求管理中心中查询是否存在其所执行的预定任务的请求。通过请求管理中心可以统一管理多个请求,而且还可以将多个请求按照先后次序排成消息队列,从而也方便各请求按顺序执行。
可选地,在步骤S212之后,还可以包括一个步骤S216(在图2中未示出):将存放在请求管理中心中的请求的状态设置为可访问或可读取的状态。例如,对于“游戏截图”请求,可以设置其状态值hasScreenshotRequest=true。当用于游戏截图的任务执行程序在OpenGL线程上轮询时,如果查询到有一可访问的游戏截图请求(如游戏截图请求且hasScreenshotRequest=true),则执行步骤S240。
在步骤S240,所述任务执行程序执行所述预定任务并获得任务结果。例如,对于预定任务为游戏截图时,用于游戏截图的任务执行程序执行游戏截图功能,对当前游戏界面中的全部或者一部分进行游戏截图,获得想要的游戏截图。
在步骤S240中获得任务结果之后,执行步骤S250,通知任务完成,将所述任务结果提供给所述应用,从而使得所述应用利用其它线程实现了在其主线程上不能实现的功能(或者预定任务)。
可选地,在步骤S240之后,执行步骤S260,存储所述任务结果,所述任务结果可以统一存放在任务结果管理中心,所述任务结果管理中心可以由移动终端本地的存储器、或者移动终端的内存的一部分来实现。
其中,在所述步骤S250,通知任务完成,将所述任务结果提供给所述应用,既可以是将所述任务结果主动提供给所述应用,也可以是所述应用先查询所述任务结果是否存在,然后在查询存在所述任务结果时获取所述任务结果。例如,对于游戏截图任务来说,在步骤S240获得想要的游戏截图后,执行步骤S260,将所述游戏截图存储在任务结果管理中心,然后执行步骤S250,通知游戏截图任务完成,将所述游戏截图提供给所述应用,供所述应用所使用。
下面给出一段游戏线程(OpenGL线程)处理截图请求以实现游戏截图的代码:
voi d handleScreenshotRequest(ScreenshotRequest request){
//获取截图请求具体内容
imageWidth=request.get ImageWidth();
imageHeight=request.get ImageHeight();
imageType=request.get ImageType();
//执行截图
imageData=OpenGL.readPixels(imageWidth,imageHtight);
//存储图片数据
screenshotPath=Storage.saveScreenshot(imageData,imageType);
//通知截图完成
TaskManager.notifyScreenshotFinish(screenshotPath);
}
可选地,所述步骤S250之前还可以包括步骤S245(步骤S245在图2中未示出),在步骤S245,将请求管理中心中的所述预定任务的请求的状态修改为不可访问或者不可读取的状态。当设置有请求管理中心时,所述成功获取任务结果的消息发送至请求管理中心,其于该消息将请求管理中心所述预定任务的请求的状态修改为不可访问或者不可读取的状态。例如,对于游戏截图请求,在完成游戏截图任务,获得游戏截图结果后,将游戏截图请求的状态修改为false,即修改hasScreenshotRequest=false。通过将所述预定任务的请求的状态修改为不可访问或者不可读取的状态,可以终止该预定任务的请求,以避免该预定任务的请求被重复执行。
本发明的任务执行装置或方法主要是以任务在同一应用的不同线程之间实现为例进行说明的,但是本发明并不限于此,所述次线程可以与主线程位于同一应用中,也可以是位于不同应用中,甚至可以位于不同平台中,因此,本发明可以更广泛地应用于同一平台内、不同应用和平台之间,即,一个应用调用另一个应用中的一任务执行模块或程序,一个应用调用一个平台中的一任务执行模块或程序,一个平台调用另一个平台中的任务执行模块或程序,以此实现自身不能实现的功能,实现对应用或者平台的功能扩展。例如,在游戏中实现音乐播放功能、实现支付功能等等。本发明相比于在自身的主程序中直接加入相应的任务执行模块或程序,一方面,可以减少主程序本身的负荷,另一方面操作更灵活,实现更容易,并且可以使程序兼容性更好。
另外,本发明上述的任务执行装置和方法的只描述了在网络应用平台侧预先配置了一个任务执行模块或程序,实际上,可以配置多个任务执行模块或程序,每个任务执行模块或程序执行一个预定任务,供不同的应用、平台或者同一应用、平台在启动不同功能时调用。当同一应用调用多个任务执行模块或程序时,各任务执行模块或程序在应用中可以按照调用的先后顺序依次执行。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的浏览器客户端中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明公开了A1、一种任务实现装置,所述任务是主程序运行过程中需要执行的一个或者多个任务,所述主程序在主线程上运行,所述任务在一个或多个次线程上执行,所述装置包括:
任务执行模块,其适于在所述次线程上运行以实现预定任务,产生任务结果;
调用模块,其适于主程序在主线程上运行时调用所述任务执行模块;
启动模块,其适于启动运行所述任务执行模块的次线程;以及
获取模块,其适于使所述主程序获得所述任务结果。
A2、根据A1所述的装置,其中,所述任务执行模块包括请求查询单元和执行单元,
所述请求查询单元适于查询来自主线程发出的执行所述预定任务的请求,
所述执行单元适于在所述请求查询单元查询到执行所述预定任务的请求的情况下执行所述预定任务并产生所述任务结果。
A3、根据A1或A2所述的装置,还包括:
请求管理模块,其适于存放所述主线程和所述次线程发出的请求,
其中,所述调用模块发送执行所述预定任务的请求存放在所述请求管理模块中。
A4、根据A1-A3中任何一项所述的装置,还包括:
任务结果管理模块,其适于存放所获得的任务结果。
A5、根据A4所述的装置,所述获取模块包括:
任务结果查询单元,其适于在所述任务结果管理模块中查询所述预定任务的任务结果;以及
获取单元,其适于在所述任务结果查询单元查询到所述任务结果时,从所述任务结果管理模块获得所述任务结果。
A6、根据A3所述的装置,还包括:
设置模块,其适于设置所述执行所述预定任务的请求的状态,当所述请求产生时,将所述请求的状态设置为可被访问的状态,当所述请求的预定任务执行完毕并已获得任务结果时,将所述请求的状态设置为不可被访问的状态。
A7、根据A1-A6中任何一项所述装置,其中,
所述主程序是游戏主程序;
所述任务执行模块是游戏截图执行模块,其在OpenGL线程上执行。
本发明还公开了B1、一种任务实现方法,所述任务是主程序运行过程中需要执行的一个或者多个任务,所述主程序在主线程上运行,所述任务在一个或多个次线程上执行,所述方法包括:
所述主程序调用在所述次线程上运行的任务执行程序,所述任务执行程序执行一预定任务;
启动运行所述任务执行程序的次线程;
所述任务执行程序运行而产生执行结果;
所述主程序获取所述执行结果。
B2、根据B1所述的方法,其中,所述任务执行程序运行而产生执行结果的步骤包括:
查询是否存在来自主线程发出的执行所述预定任务的请求,
在查询到执行所述预定任务的请求时执行所述预定任务并产生所述任务结果。
B3、根据B2所述的方法,其中,
所述主程序调用在所述次线程上运行的任务执行程序的步骤为:所述主程序发送调用任务执行程序的请求到请求管理中心;
所述查询来自主线程发出的执行所述预定任务的请求的步骤为:查询所述请求管理中心中是否存在执行所述预定任务的请求。
B4、根据B1-B3中任何一项所述的方法,其中,
在所述任务执行程序运行而产生执行结果之后还包括步骤:
将所述执行结果存放在任务结果管理中心;
其中,所述主程序获取所述执行结果的步骤为:所述主程序从所述任务管理中心获取所述执行结果。
B5、根据B4所述的方法,其中,所述主程序从所述任务管理中心获取所述执行结果的步骤包括:
在所述任务结果管理中心中查询所述预定任务的任务结果;以及
在查询到所述任务结果时,从所述任务结果管理中心获得所述任务结果。
B6、根据B1-B5中任何一项所述的方法,其中所述应用将所述任务结果发送至所述网络应用平台的步骤包括:
在所述主程序发送调用任务执行程序的请求到请求管理中心的步骤之后还包括:
将所述请求的状态设置为可被访问的状态;
在所述任务执行程序运行而产生执行结果的步骤之后还包括:
将所述请求的状态设置为不可被访问的状态。
本发明还公开了C1、一种应用,其主程序在主线程上运行,所述应用在运行时执行一个或者多个任务,所述任务在一个或多个次线程上执行,所述应用包括权利要求1-7中任何一项所述的任务实现装置。
C2、根据C1所述的应用,其为游戏,所述任务包括游戏主程序运行时要执行的游戏截图,所述游戏截图任务在OpenGL线程上执行。
Claims (13)
1.一种任务实现装置,所述任务是主程序运行过程中需要执行的一个或者多个任务,所述主程序在主线程上运行,所述任务在一个或多个次线程上执行,且所述任务在主线程上不能实现,所述次线程为除了主线程之外的其他线程,且所述次线程与所述主线程位于不同的应用中,所述装置包括:
任务执行模块,其适于在所述次线程上运行以实现预定任务,产生任务结果;
调用模块,其适于主程序在主线程上运行时调用所述任务执行模块,其中,以发出执行所述预定任务的请求的方式开始所述调用;
启动模块,其适于启动运行所述任务执行模块的次线程;以及
获取模块,其适于使所述主程序获得所述任务结果。
2.根据权利要求1所述的装置,其中,所述任务执行模块包括请求查询单元和执行单元,
所述请求查询单元适于查询来自主线程发出的执行所述预定任务的请求,
所述执行单元适于在所述请求查询单元查询到执行所述预定任务的请求的情况下执行所述预定任务并产生所述任务结果。
3.根据权利要求1或2所述的装置,还包括:
请求管理模块,其适于存放所述主线程和所述次线程发出的请求,
其中,所述调用模块发送执行所述预定任务的请求存放在所述请求管理模块中。
4.根据权利要求1所述的装置,还包括:
任务结果管理模块,其适于存放所获得的任务结果。
5.根据权利要求4所述的装置,所述获取模块包括:
任务结果查询单元,其适于在所述任务结果管理模块中查询所述预定任务的任务结果;以及
获取单元,其适于在所述任务结果查询单元查询到所述任务结果时,从所述任务结果管理模块获得所述任务结果。
6.根据权利要求3所述的装置,还包括:
设置模块,其适于设置所述执行所述预定任务的请求的状态,当所述请求产生时,将所述请求的状态设置为可被访问的状态,当所述请求的预定任务执行完毕并已获得任务结果时,将所述请求的状态设置为不可被访问的状态。
7.根据权利要求1所述装置,其中,
所述主程序是游戏主程序;
所述任务执行模块是游戏截图执行模块,其在OpenGL线程上执行。
8.一种任务实现方法,所述任务是主程序运行过程中需要执行的一个或者多个任务,所述主程序在主线程上运行,所述任务在一个或多个次线程上执行,且所述任务在主线程上不能实现,所述次线程为除了主线程之外的其他线程,且所述次线程与所述主线程位于不同的应用中,所述方法包括:
所述主程序调用在所述次线程上运行的任务执行程序,所述任务执行程序执行一预定任务,其中,以发出执行所述预定任务的请求的方式开始所述调用;
启动运行所述任务执行程序的次线程;
所述任务执行程序运行而产生执行结果;
所述主程序获取所述执行结果。
9.根据权利要求8所述的方法,其中,所述任务执行程序运行而产生执行结果的步骤包括:
查询是否存在来自主线程发出的执行所述预定任务的请求,
在查询到执行所述预定任务的请求时执行所述预定任务并产生所述执行结果。
10.根据权利要求9所述的方法,其中,
所述主程序调用在所述次线程上运行的任务执行程序的步骤为:所述主程序发送调用任务执行程序的请求到请求管理中心;
所述查询来自主线程发出的执行所述预定任务的请求的步骤为:查询所述请求管理中心中是否存在执行所述预定任务的请求。
11.根据权利要求8-10中任何一项所述的方法,其中,
在所述任务执行程序运行而产生执行结果之后还包括步骤:
将所述执行结果存放在任务结果管理中心;
其中,所述主程序获取所述执行结果的步骤为:所述主程序从所述任务结果管理中心获取所述执行结果。
12.根据权利要求11所述的方法,其中,所述主程序从所述任务结果管理中心获取所述执行结果的步骤包括:
在所述任务结果管理中心中查询所述预定任务的执行结果;以及
在查询到所述执行结果时,从所述任务结果管理中心获得所述执行结果。
13.根据权利要求10所述的方法,在所述主程序发送调用任务执行程序的请求到请求管理中心的步骤之后还包括:
将所述请求的状态设置为可被访问的状态;
在所述任务执行程序运行而产生执行结果的步骤之后还包括:
将所述请求的状态设置为不可被访问的状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510009759.0A CN104572284B (zh) | 2015-01-08 | 2015-01-08 | 任务实现装置和方法、以及应用 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510009759.0A CN104572284B (zh) | 2015-01-08 | 2015-01-08 | 任务实现装置和方法、以及应用 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104572284A CN104572284A (zh) | 2015-04-29 |
CN104572284B true CN104572284B (zh) | 2019-03-15 |
Family
ID=53088431
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510009759.0A Active CN104572284B (zh) | 2015-01-08 | 2015-01-08 | 任务实现装置和方法、以及应用 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104572284B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170031724A1 (en) * | 2015-07-31 | 2017-02-02 | Futurewei Technologies, Inc. | Apparatus, method, and computer program for utilizing secondary threads to assist primary threads in performing application tasks |
US10509677B2 (en) * | 2015-09-30 | 2019-12-17 | Lenova (Singapore) Pte. Ltd. | Granular quality of service for computing resources |
CN106021399B (zh) * | 2016-05-12 | 2019-12-06 | 网易(杭州)网络有限公司 | 查询请求消息的处理方法及装置 |
CN109445954B (zh) * | 2018-09-11 | 2020-11-24 | 百富计算机技术(深圳)有限公司 | 一种定时任务的执行方法、终端设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593231A (zh) * | 2012-08-14 | 2014-02-19 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置及移动终端 |
CN103902646A (zh) * | 2013-12-27 | 2014-07-02 | 北京天融信软件有限公司 | 一种分布式任务管理系统与方法 |
CN104216785A (zh) * | 2014-08-26 | 2014-12-17 | 烽火通信科技股份有限公司 | 通用策略任务系统及其实现方法 |
CN104216768A (zh) * | 2014-09-22 | 2014-12-17 | 北京金山安全软件有限公司 | 一种数据处理方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008503011A (ja) * | 2004-06-08 | 2008-01-31 | ダートデバイセズ コーポレーション | ユニバーサルデバイスインタオペラビリティプラットフォームのためのデバイスチームリクルートメントおよびコンテンツレンディションのアーキテクチャ装置および方法 |
-
2015
- 2015-01-08 CN CN201510009759.0A patent/CN104572284B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593231A (zh) * | 2012-08-14 | 2014-02-19 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置及移动终端 |
CN103902646A (zh) * | 2013-12-27 | 2014-07-02 | 北京天融信软件有限公司 | 一种分布式任务管理系统与方法 |
CN104216785A (zh) * | 2014-08-26 | 2014-12-17 | 烽火通信科技股份有限公司 | 通用策略任务系统及其实现方法 |
CN104216768A (zh) * | 2014-09-22 | 2014-12-17 | 北京金山安全软件有限公司 | 一种数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104572284A (zh) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104572284B (zh) | 任务实现装置和方法、以及应用 | |
CN105117289B (zh) | 基于云测试平台的任务分配方法、装置及系统 | |
CN113641457B (zh) | 容器创建方法、装置、设备、介质及程序产品 | |
CN110262901B (zh) | 一种数据处理方法及数据处理系统 | |
CN105183564B (zh) | 基于云测试平台的设备调度方法、装置及系统 | |
CN107018191B (zh) | 一种控制游戏的方法和装置 | |
US20090282413A1 (en) | Scalable Scheduling of Tasks in Heterogeneous Systems | |
US9886735B2 (en) | Hybrid engine for central processing unit and graphics processor | |
CN110221901A (zh) | 容器资源创建方法、装置、设备及计算机可读存储介质 | |
CN104750549A (zh) | 计算任务处理装置、方法及系统 | |
US11148051B2 (en) | Virtual reality environment multiplatform adaptive system | |
CN105511975B (zh) | 一种异常处理方法和装置 | |
CN110399231A (zh) | 基于跨平台的数据处理方法、装置及计算机设备 | |
CN109800092A (zh) | 一种共享数据的处理方法、装置及服务器 | |
CN110333939A (zh) | 任务混合调度方法、装置、调度服务器及资源服务器 | |
CN110287022A (zh) | 一种调度节点选择方法、装置、存储介质及服务器 | |
CN110532077A (zh) | 任务处理方法、装置及存储介质 | |
CN112395736A (zh) | 一种分布交互仿真系统的并行仿真作业调度方法 | |
CN109343862A (zh) | 应用的资源数据的调度方法及装置 | |
CN113377722A (zh) | 一种资源数据读取方法、装置和存储介质 | |
Nguyen et al. | Koha: Building a kafka-based distributed queue system on the fly in a hadoop cluster | |
CN110225082B (zh) | 任务处理方法、装置、电子设备和计算机可读介质 | |
CN105975329B (zh) | 一种虚拟机的创建方法和装置 | |
EP0862113A2 (en) | Autonomous agent architecture | |
CN109426561A (zh) | 一种任务处理方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20180507 Address after: 100020 Beijing Chaoyang District East Bridge Road 12, 1, 5, 506 rooms. Applicant after: Beijing science and Technology Co., Ltd. Address before: 100020 Chaoyang District, Beijing Chao Wai Street B 6, 10, 1118 Applicant before: MENGYOU (BEIJING) TECHNOLOGY CO., LTD. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |