CN102567111A - 一种异步过程调用的方法、系统和终端设备 - Google Patents

一种异步过程调用的方法、系统和终端设备 Download PDF

Info

Publication number
CN102567111A
CN102567111A CN2011104374630A CN201110437463A CN102567111A CN 102567111 A CN102567111 A CN 102567111A CN 2011104374630 A CN2011104374630 A CN 2011104374630A CN 201110437463 A CN201110437463 A CN 201110437463A CN 102567111 A CN102567111 A CN 102567111A
Authority
CN
China
Prior art keywords
thread
unit
result
receiving element
resource
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.)
Granted
Application number
CN2011104374630A
Other languages
English (en)
Other versions
CN102567111B (zh
Inventor
刘骁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
World (Shanghai) Technology Development Co., Ltd.
Original Assignee
Shenzhen Temobi Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Temobi Science and Technology Co Ltd filed Critical Shenzhen Temobi Science and Technology Co Ltd
Priority to CN201110437463.0A priority Critical patent/CN102567111B/zh
Publication of CN102567111A publication Critical patent/CN102567111A/zh
Application granted granted Critical
Publication of CN102567111B publication Critical patent/CN102567111B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Telephonic Communication Services (AREA)

Abstract

本发明公开一种异步过程调用的方法、系统和终端设备,本发明中的第一线程发送服务请求后,返回并继续执行后续的指令;第二线程接收并处理所述服务请求,生成第一处理结果,并通过回调函数将所述第一处理结果反馈到第三线程;第三线程根据所述第一处理结果生成第二处理结果。本发明中第一线程发送服务请求后不需要等待反馈结果,且第二线程不需要执行第一线程的任务,实现了应用层间的异步过程调用,避免造成线程死锁,调用逻辑简单。在初始化时,第一线程创建第三线程,且第三线程的优先级高于第一线程的优先级,在接收到第一处理结果后,抢占第一线程的CPU资源继续处理并最终生成第二处理结果,即使回调频率较高时,也不会造成访问异常。

Description

一种异步过程调用的方法、系统和终端设备
技术领域
本发明涉及过程调用领域,尤其涉及一种异步过程调用的方法、系统和终端设备。
背景技术
目前,应用层间的回调函数的设计,一般为同步过程调用,没有实现异步过程调用。
如果客户端线程和服务端线程采用同步过程调用,服务端线程处理服务请求时,客户端线程只能处于等待状态,只有服务端线程对本次服务请求处理结束,客户端线程才能继续运行其他的指令,效率低。
如果客户端线程和服务端线程采用异步过程调用,这时服务端线程响应服务请求并生成处理结果后,还需要调用外部硬件来继续处理其他的指令,效率低,并给服务端线程造成较大的负担,这种异步过程调用不可行。
现有技术中的回调函数还存在以下技术问题:
1、由于不清楚实现方的设计技术,很有可能调用方陷入线程死锁或者无意识潜入系统内核长时间等待某个资源可用;
2、实现方在设计时出现逻辑错误,会造成调用方彻底崩溃;
3、回调逻辑复杂且回调的频率高时,如果回调的实现不够完善,将导致数据访问异常。
发明内容
本发明实施例的目的在于提出一种异步过程调用的方法、系统和终端设备,旨在解决现有技术中应用层间一般为同步过程调用,没有实现异步过程调用;且回调机制不明确或逻辑出错,误入系统内核长时间等待资源、线程死锁,以及回调逻辑复杂,回调的频率高时导致数据访问异常的技术问题。
本发明实施例是这样实现的,一种异步过程调用的方法,包括以下步骤:
第一线程通过服务接口发送服务请求,返回并继续执行后续的指令;
第二线程接收并处理所述服务请求,生成第一处理结果,并通过回调函数将所述第一处理结果反馈到第三线程;
第三线程接收所述第一处理结果,并根据所述第一处理结果生成第二处理结果。
本发明实施例的另一目的在于提出一种异步过程调用的系统,所述系统包括:第一处理模块、第二处理模块、回调模块和第三处理模块;其中,所述第一处理模块包括请求单元和执行单元;所述第二处理模块包括第一接收单元和第一处理单元;所述回调模块包括反馈单元;所述第三处理模块包括第二接收单元和第二处理单元;
所述请求单元,与所述执行单元和第一接收单元相连,用于第一线程通过服务接口发送服务请求;
所述执行单元,与所述请求单元相连,用于第一线程返回并继续执行后续的指令;
所述第一接收单元,与所述请求单元和第一处理单元相连,用于第二线程接收所述请求单元发送的服务请求,并通知第一处理单元;
所述第一处理单元,与所述第一接收单元和反馈单元相连,用于第二线程接收所述第一接收单元的通知,并处理所述服务请求,生成第一处理结果,同时通知反馈单元;
所述反馈单元,与所述第一处理单元和第二接收单元相连,用于第二线程通过回调函数将所述第一处理结果反馈到第二接收单元;
所述第二接收单元,与所述反馈单元和第二处理单元相连,用于第三线程接收所述第一处理结果,并通知第二处理单元;
所述第二处理单元,与所述第二接收单元相连,用于第三线程根据所述第一处理结果生成第二处理结果。
本发明实施例的另一目的在于提出一种包含所述异步过程调用系统的异步过程调用的终端设备。
本发明的有益效果:
本发明中的第一线程通过服务接口发送服务请求后,返回并继续执行后续的指令;第二线程接收并处理所述服务请求,生成第一处理结果,并通过回调函数将所述第一处理结果反馈到第三线程;第三线程接收所述第一处理结果,并根据所述第一处理结果生成第二处理结果。本发明中第一线程发送服务请求后不需要等待反馈结果,而且第二线程不需要执行第一线程的任务,实现了应用层间的异步过程调用,避免造成线程死锁,调用逻辑简单。在初始化时,第一线程创建第三线程,且第三线程的优先级高于第一线程的优先级,在接收到第一处理结果后,可以抢占第一线程的CPU资源继续处理服务请求并最终生成第二处理结果,避免造成线程死锁,调用逻辑简单,即使回调频率较高时,也不会造成访问异常。进一步,通过消息队列同步机制以及线程间形态的转换,进一步避免造成线程死锁,提高线程间的有序协作和执行效率。
附图说明
图1是本发明一种异步过程调用方法的第一优选实施例的流程图;
图2是本发明一种异步过程调用方法的第二优选实施例的流程图;
图3是本发明一种异步过程调用方法的第三优选实施例的流程图;
图4是本发明一种异步过程调用方法的第四优选实施例的流程图;
图5是本发明一种异步过程调用系统的第一优选实施例的结构示意图;
图6是本发明一种异步过程调用系统的第二优选实施例的结构示意图;
图7是本发明一种异步过程调用系统的第三优选实施例的结构示意图;
图8是本发明一种异步过程调用系统的第四优选实施例的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图和实施例,对本发明进行进一步详细说明,为了便于说明,仅示出了与本发明实施例相关的部分。应当理解,此处所描写的具体实施例,仅仅用于解释本发明,并不用以限制本发明。
本发明中的第一线程通过服务接口发送服务请求后,返回并继续执行后续的指令;第二线程接收并处理所述服务请求,生成第一处理结果,并通过回调函数将所述第一处理结果反馈到第三线程;第三线程接收所述第一处理结果,并根据所述第一处理结果生成第二处理结果。本发明中第一线程发送服务请求后不需要等待反馈结果,而且第二线程不需要执行第一线程的任务,实现了应用层间的异步过程调用,避免造成线程死锁,调用逻辑简单。在初始化时,第一线程创建第三线程,且第三线程的优先级高于第一线程的优先级,在接收到第一处理结果后,可以抢占第一线程的CPU资源继续处理服务请求并最终生成第二处理结果,避免造成线程死锁,调用逻辑简单,即使回调频率较高时,也不会造成访问异常。进一步,通过消息队列同步机制以及线程间形态的转换,进一步避免造成线程死锁,提高线程间的有序协作和执行效率。
实施例一
图1是本发明一种异步过程调用方法的第一优选实施例的流程图。所述的方法包括以下步骤:
S101,第一线程通过服务接口发送服务请求,返回并继续执行后续的指令;
第一线程在第一次向第二线程发送服务请求前首先要说明服务对象;
所述服务对象为第二线程提供的认证凭证,第一线程向第二线程发送服务请求前必须先出示认证凭证,第二线程认证通过,才响应第一线程的服务请求;
第一线程发送服务请求后,不需要等待反馈结果,返回并继续执行后续的指令;
S102,第二线程接收并处理所述服务请求,生成第一处理结果,并通过回调函数将所述第一处理结果反馈到第三线程;
所述第一处理结果包括:中间的相关参数、反馈信息等;
S103,第三线程接收所述第一处理结果,并根据所述第一处理结果生成第二处理结果。
实施例二
图2是本发明一种异步过程调用方法的第二优选实施例的流程图。所述的方法包括以下步骤:
S201,第一线程通过服务接口发送服务请求,创建第三线程,返回并继续执行第一线程后续的指令;其中,所述第三线程的优先级高于第一线程的优先级;
第三线程创建后进入等待消息状态;
在初始化才需要创建第三线程,其他情况下只需要发送服务请求即可;
S202,第二线程接收并处理所述服务请求,生成第一处理结果,并通过回调函数将所述第一处理结果反馈到第三线程;
S203,第三线程接收所述第一处理结果,抢占第一线程的CPU资源继续处理所述第一处理结果,并生成第二处理结果;
S204,返还CPU资源到所述第一线程。
所述第一处理结果为第二线程响应所述服务请求所必须完成的处理结果,也是中间结果。
所述第二处理结果为所述服务请求最终的收尾结果。
例如所述服务请求为视频节目播放请求时,所述第一处理结果为解码,所述第二处理结果就是渲染。
实施例三
图3是本发明一种异步过程调用方法的第三优选实施例的流程图。所述的方法包括以下步骤:
S301,第一线程通过服务接口发送服务请求,创建第三线程,返回并继续执行第一线程后续的指令;其中,所述第三线程的优先级高于第一线程的优先级;
S302,第二线程接收并处理所述服务请求,生成第一处理结果;
S303,回调函数将所述第一处理结果放入第三线程的消息队列;
这里使用的同步机制为消息队列,也可以是其他的同步机制;
S304,所述第三线程根据消息队列中消息的排列,顺序获取所述消息;
S305,所述第三线程抢占第一线程的CPU资源继续处理所述消息,并生成第二处理结果。
实施例四
图4是本发明一种异步过程调用方法的第四优选实施例的流程图。所述的方法包括以下步骤:
S401,第一线程通过服务接口发送服务请求,创建第三线程,返回并继续执行第一线程后续的指令;其中,所述第三线程的优先级高于第一线程的优先级;
S402,第二线程接收并处理所述服务请求,生成第一处理结果;
S403,回调函数将所述第一处理结果放入第三线程的消息队列;
S404,所述第三线程根据消息队列中消息的排列,顺序获取所述消息;
S405,所述第三线程抢占第一线程的CPU资源继续处理所述消息,并生成第二处理结果;
S406,所述第一线程进入就绪态;
所述第三线程抢占第一线程的CPU资源后,所述第一线程进入就绪态;
S407,所述第三线程生成第二处理结果后,判断第三线程消息队列中是否有等待处理的消息,如果否,则进入步骤S408;如果是,则进入步骤S404;
S408,所述第三线程进入等待消息状态;
S409,所述第一线程从就绪态转为运行态。
所述就绪态表示进程已具备运行条件,但未被进程调度程序选中,暂时不能运行。
所述运行态表示当前进程已分配到CPU,该进程对应的程序正在处理机上执行。
为便于理解,举例说明,例如所述第一线程为客户端线程,第二线程为服务端线程。
在现有技术中,客户端线程和服务端线程一般采用同步过程调用,需要服务端线程生成第一处理结果和第二处理结果,但是这时的客户端线程只能处于等待状态,不能处理系统的其他事件,只有服务端线程生成第二处理结果,客户端线程才能继续处理后续的指令,效率低;而且,服务端线程一般需要处理很多线程发送的服务请求,这时客户端线程的等待时间就会进一步延长。
如果客户端线程和服务端线程采用异步过程调用,这时服务端线程生成第一处理结果后,还需要调用外部硬件来生成第二处理结果,效率低,并给服务端线程造成较大的负担,这种异步过程调用不可行。
在本发明中,例如,客户端线程需要播放一个视频节目时,首先通过服务接口向服务端线程发送服务请求,请求服务器对这个视频节目进行解码,同时客户端线程创建一个伴随线程(即第三线程),其中伴随线程的优先级高于客户端线程的优先级,以便伴随线程能够抢占客户端线程的CPU资源;客户端线程处理完上述操作后返回并继续执行系统的其他事件,而不需要等待回调函数反馈处理结果。
服务端线程接收到客户端线程发送的解码服务请求后,进行解码,并将解码后的视频图像数据通过回调函数反馈到伴随线程。
所述视频图像数据就是第一处理结果。
伴随线程接收所述解码后的视频图像数据,抢占客户端线程的CPU资源来做后期处理,例如最后生成渲染处理结果,这里所述的渲染处理结果就是第二处理结果。
伴随线程生成渲染处理结果后,调用硬件资源例如LCD进行显示,并返还CPU资源给客户端线程,这时客户端线程就可以再次继续响应系统的其他事件。
本发明实施例中的第一线程通过服务接口发送服务请求后,返回并继续执行后续的指令;第二线程接收并处理所述服务请求,生成第一处理结果,并通过回调函数将所述第一处理结果反馈到第三线程;第三线程接收所述第一处理结果,并根据所述第一处理结果生成第二处理结果。本发明中第一线程发送服务请求后不需要等待反馈结果,而且第二线程不需要执行第一线程的任务,实现了应用层间的异步过程调用,避免造成线程死锁,调用逻辑简单。在初始化时,第一线程创建第三线程,且第三线程的优先级高于第一线程的优先级,在接收到第一处理结果后,可以抢占第一线程的CPU资源继续处理服务请求并最终生成第二处理结果,避免造成线程死锁,调用逻辑简单,即使回调频率较高时,也不会造成访问异常。进一步,通过消息队列同步机制以及线程间形态的转换,进一步避免造成线程死锁,提高线程间的有序协作和执行效率。
实施例五
图5是本发明一种异步过程调用系统的第一优选实施例的结构示意图。
所述系统包括:第一处理模块、第二处理模块、回调模块和第三处理模块;其中,所述第一处理模块包括请求单元和执行单元;所述第二处理模块包括第一接收单元和第一处理单元;所述回调模块包括反馈单元;所述第三处理模块包括第二接收单元和第二处理单元;
所述请求单元,与所述执行单元和第一接收单元相连,用于第一线程通过服务接口发送服务请求;
所述请求单元中,第一线程在第一次向第一接收单元发送服务请求前首先要说明服务对象;
所述服务对象为第二线程提供的认证凭证,第一线程向第一接收单元发送服务请求前必须先出示认证凭证,由第一处理单元中的第二线程认证,如果认证通过,则响应并处理第一线程的服务请求;
所述执行单元,与所述请求单元相连,用于第一线程返回并继续执行后续的指令;
所述请求模块中的第一线程发送服务请求后,不需要等待反馈结果,通知执行模块,使得第一线程返回并继续执行后续的指令;
所述第一接收单元,与所述请求单元和第一处理单元相连,用于第二线程接收所述请求单元发送的服务请求,并通知第一处理单元;
所述第一处理单元,与所述第一接收单元和反馈单元相连,用于第二线程接收所述第一接收单元的通知,并处理所述服务请求,生成第一处理结果,同时通知反馈单元;
所述第一处理结果包括:中间的相关参数、反馈信息等;
所述反馈单元,与所述第一处理单元和第二接收单元相连,用于第二线程通过回调函数将所述第一处理结果反馈到第二接收单元;
所述第二接收单元,与所述反馈单元和第二处理单元相连,用于第三线程接收所述第一处理结果,并通知第二处理单元;
所述第二处理单元,与所述第二接收单元相连,用于第三线程根据所述第一处理结果生成第二处理结果。
所述第二处理结果为所述服务请求最终的收尾结果。
例如所述服务请求为视频节目播放请求时,所述第一处理结果为解码,所述第二处理结果就是渲染。
实施例六
图6是本发明一种异步过程调用系统的第二优选实施例的结构示意图。
所述第一处理模块还包括创建单元;所述第三处理模块还包括资源抢占单元和资源返还单元;
所述创建单元,与所述请求单元相连,用于所述第一线程初始化时创建第三线程,且所述第三线程的优先级高于第一线程的优先级;
在初始化时,所述创建单元才需要创建第三线程;
所述资源抢占单元,与所述第二接收单元和第二处理单元相连,用于所述第三线程抢占第一线程的CPU资源,并通知第二处理单元;
所述第二处理单元,与所述资源抢占单元和资源返还单元相连,用于接收所述第二处理单元的通知,由第三线程继续处理所述第一处理结果,并生成第二处理结果,同时通知所述资源返还单元;
所述资源返还单元,与所述第二处理单元相连,用于第三线程返还CPU资源到所述第一线程。
所述第一处理结果为第二线程响应所述服务请求所必须完成的处理结果,也是中间结果。
所述第二处理结果为所述服务请求最终的收尾结果,例如所述服务请求为视频节目播放请求时,所述第一处理结果为解码,所述第二处理结果就是渲染。
实施例七
图7是本发明一种异步过程调用系统的第三优选实施例的结构示意图。
所述第三处理模块还包括消息队列单元;
这里使用的同步机制为消息队列,也可以是其他的同步机制;
所述反馈单元,与所述第一处理单元和消息队列单元相连,用于将所述第一处理结果顺序发送到消息单元;
所述消息队列单元,与所述反馈单元与第二接收单元相连,用于顺序将接收到的第一处理结果存放到第三线程中的消息队列;
所述第二接收单元还用于所述第三线程根据消息队列中消息的排列,顺序获取所述消息;
所述资源抢占单元还用于所述第三线程抢占第一线程的CPU资源;
所述第二处理单元还用于所述第三线程继续处理所述消息,并生成第二处理结果。
实施例八
图8是本发明一种异步过程调用系统的第四优选实施例的结构示意图。
所述第一处理模块还包括第一状态单元;所述第三处理模块还包括判断单元和第二状态单元;
所述第一状态单元,与所述执行单元、资源抢占单元和资源返还单元相连,用于记录第一线程的运行状态,当第一线程执行指令时,则将所述运行状态置为运行态;当第一线程的CPU资源被第三线程抢占后,则将所述运行状态置为就绪态;当CPU资源返还到第一线程后,则将所述运行状态置为运行态;
所述判断单元,与所述消息队列单元、第二接收单元、第二处理单元、资源返还单元和第二状态单元相连,用于所述第三线程生成第二处理结果后,判断第三线程消息队列中是否有等待处理的消息,如果是,则通知第二接收单元;如果否,则通知资源返还单元和第二状态单元;
所述第二接收单元,还用于接收所述判断单元的通知,顺序获取所述消息;
所述消息队列单元还用于当接收到的第一处理结果并存放到第三线程中的消息队列时,则通知第二状态单元;
所述创建单元,还用于创建第三线程后,通知所述第二状态单元;
所述第二状态单元,与所述创建单元、判断单元和消息队列单元相连,用于接收所述创建单元的通知,并将所述第三线程的运行状态置为等待消息状态;还用于接收所述消息队列单元的通知,并将所述第三线程的运行状态置为运行态;还用于接收所述判断单元的通知,并将所述第三线程的运行状态置为等待消息状态。
所述就绪态表示进程已具备运行条件,但未被进程调度程序选中,暂时不能运行。
所述运行态表示当前进程已分配到CPU,该进程对应的程序正在处理机上执行。
为便于理解,举例说明,所述第一处理模块表示第一线程的功能模块;所述第二处理模块表示第二线程的功能模块;所述回调模块表示回调函数的功能模块;所述第三处理模块表示第三线程的功能模块。
其中这里举例将客户端线程表示为第一线程,将服务端线程表示为第二线程;
在现有技术中,客户端线程和服务端线程一般采用同步过程调用,需要服务端线程生成第一处理结果和第二处理结果,但是这时的客户端线程只能处于等待状态,不能处理系统的其他事件,只有服务端线程生成第二处理结果,客户端线程才能继续处理后续的指令,效率低;而且,服务端线程一般需要处理很多线程发送的服务请求,这时客户端线程的等待时间就会进一步延长。
如果客户端线程和服务端线程采用异步过程调用,这时服务端线程生成第一处理结果后,还需要调用外部硬件来生成第二处理结果,效率低,并给服务端线程造成较大的负担,这种异步过程调用不可行。
在本发明中,例如,客户端线程需要播放一个视频节目时,首先由请求单元通过服务接口向第一接收单元发送服务请求,请求服务器对这个视频节目进行解码,同时由创建单元通过客户端线程创建一个伴随线程(即第三线程),其中伴随线程的优先级高于客户端线程的优先级,以便伴随线程能够抢占客户端线程的CPU资源;请求单元处理完上述操作后,通知执行单元,使得客户端线程返回并继续执行系统的其他事件,而不需要等待反馈单元反馈处理结果。
第一接收单元接收到请求单元发送的解码服务请求后,通知第一处理单元;
所述第一处理单元接收到第一接收单元的通知后,由服务端线程对视频节目进行解码,并将解码后的视频图像数据发送到反馈单元;
所述反馈单元通过回调函数将所述解码后的视频图像数据反馈到第二接收单元;
所述视频图像数据就是第一处理结果;
所述第二接收单元经伴随线程接收所述解码后的视频图像数据;
通过资源抢占单元由所述伴随线程抢占客户端线程的CPU资源,并通知第二处理单元;
由第二处理单元使用抢占来的客户端线程的CPU资源来做后期处理,并生成第二处理结果,例如最后生成渲染处理结果,这里所述的渲染处理结果就是第二处理结果;
伴随线程生成渲染处理结果后,调用硬件资源例如LCD进行显示,并经资源返还单元返还CPU资源给客户端线程,这时客户端线程就可以再次继续响应系统的其他事件。
进一步,所述创建单元在所述客户端线程初始化时创建伴随线程,并且所述伴随线程的优先级高于客户端线程的优先级,便于伴随线程抢占客户端线程的CPU资源来继续处理第一处理结果并生成第二处理结果;
同时,所述创建单元在创建伴随线程后,通知所述第二状态单元;所述第二状态单元将所述伴随线程的运行状态置为等待消息状态;
所述第一状态单元用于记录客户端线程的运行状态,当客户端线程执行指令时,则将所述运行状态置为运行态;当客户端线程的CPU资源被伴随线程抢占后,则将所述运行状态置为就绪态;当CPU资源返还到客户端线程后,则将所述运行状态置为运行态;
所述第二状态单元接收到所述创建单元的通知,并将所述伴随线程的运行状态置为等待消息状态。
进一步,所述反馈单元将所述第一处理结果顺序发送到消息队列单元;
所述消息队列单元顺序将接收到的第一处理结果存放到伴随线程中的消息队列,并通知第二状态单元;
所述第二接收单元序获取所述消息;
所述资源抢占单元使得所述第三线程抢占第一线程的CPU资源;并由所述第二处理单元继续处理所述消息,并生成第二处理结果;
所述判断单元判断第三线程消息队列中是否有等待处理的消息,如果是,则通知第二接收单元;如果否,则通知资源返还单元和第二状态单元;
所述第二状态单元接收到所述创建单元的通知接收所述消息队列单元的通知,并将所述伴随线程的运行状态置为运行态;还用于接收所述判断单元的通知,并将所述伴随线程的运行状态置为等待消息状态。
本发明实施例中的系统包括:第一处理模块、第二处理模块、回调模块和第三处理模块;其中,所述第一处理模块包括请求单元和执行单元;所述第二处理模块包括第一接收单元和第一处理单元;所述回调模块包括反馈单元;所述第三处理模块包括第二接收单元和第二处理单元;所述请求单元用于第一线程通过服务接口发送服务请求后,所述执行单元使得第一线程返回并继续执行后续的指令;所述第一接收单元用于第二线程接收所述服务请求,并由所述第一处理单元处理并生成第一处理结果,最后由反馈单元通过回调函数将所述第一处理结果反馈到第二接收单元;所述第二处理单元用于第三线程根据所述第一处理结果生成第二处理结果。本发明中第一线程发送服务请求后不需要等待反馈结果,而且第二线程不需要执行第一线程的任务,实现了应用层间的异步过程调用,避免造成线程死锁,调用逻辑简单。在初始化时,由所述创建单元创建第三线程,且第三线程的优先级高于第一线程的优先级,在所述第二接收单元接收到第一处理结果后,通过所述资源抢占单元抢占第一线程的CPU资源,并经第二处理单元继续处理服务请求并最终生成第二处理结果,避免造成线程死锁,调用逻辑简单,即使回调频率较高时,也不会造成访问异常。进一步,通过消息队列单元中的消息队列同步机制以及第一状态单元和第二状态单元转换线程运行状态,进一步避免造成线程死锁,提高线程间的有序协作和执行效率。
本发明提供的异步过程调用系统可以应用于需要在应用层间异步过程调用的终端设备上,例如PC、PDA、手机、服务器等。
本领域的普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序指令相关硬件来完成的,所述的程序可以存储于计算机可读取存储介质中,所述的存储介质可以为ROM、RAM、磁盘、光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种异步过程调用的方法,所述方法包括步骤:
第一线程通过服务接口发送服务请求,返回并继续执行后续的指令;
第二线程接收并处理所述服务请求,生成第一处理结果,并通过回调函数将所述第一处理结果反馈到第三线程;
第三线程接收所述第一处理结果,并根据所述第一处理结果生成第二处理结果。
2.根据权利要求1所述的异步过程调用的方法,其特征在于,所述第三线程为第一线程初始化时创建的,且所述第三线程的优先级高于第一线程的优先级;
所述“根据所述第一处理结果生成第二处理结果”的过程为:
抢占第一线程的CPU资源继续处理所述第一处理结果,并生成第二处理结果;
返还CPU资源到所述第一线程。
3.根据权利要求2所述的异步过程调用的方法,其特征在于,所述“回调函数将所述第一处理结果反馈到第三线程”的过程为:
所述回调函数将所述第一处理结果放入第三线程的消息队列;
所述第三线程接收所述第一处理结果的过程为:
所述第三线程根据消息队列中消息的排列,顺序获取所述消息;
所述“抢占第一线程的CPU资源继续处理所述第一处理结果,并生成第二处理结果”具体为:
所述第三线程抢占第一线程的CPU资源继续处理所述消息,并生成第二处理结果。
4.根据权利要求3所述的异步过程调用的方法,其特征在于,所述步骤“所述第三线程抢占第一线程的CPU资源继续处理所述消息,并生成第二处理结果”之后还包括步骤:
所述第一线程进入就绪态;
所述第三线程生成第二处理结果后,判断第三线程消息队列中是否有等待处理的消息,如果否,则所述第三线程进入等待消息状态。
5.根据权利要求4所述的异步过程调用的方法,其特征在于,所述“所述第三线程生成第二处理结果后,判断第三线程消息队列中是否有等待处理的消息”,如果是,则所述第一线程从就绪态转为运行态。
6.一种异步过程调用的系统,其特征在于,所述系统包括:第一处理模块、第二处理模块、回调模块和第三处理模块;其中,所述第一处理模块包括请求单元和执行单元;所述第二处理模块包括第一接收单元和第一处理单元;所述回调模块包括反馈单元;所述第三处理模块包括第二接收单元和第二处理单元;
所述请求单元,与所述执行单元和第一接收单元相连,用于第一线程通过服务接口发送服务请求;
所述执行单元,与所述请求单元相连,用于第一线程返回并继续执行后续的指令;
所述第一接收单元,与所述请求单元和第一处理单元相连,用于第二线程接收所述请求单元发送的服务请求,并通知第一处理单元;
所述第一处理单元,与所述第一接收单元和反馈单元相连,用于第二线程接收所述第一接收单元的通知,并处理所述服务请求,生成第一处理结果,同时通知反馈单元;
所述反馈单元,与所述第一处理单元和第二接收单元相连,用于第二线程通过回调函数将所述第一处理结果反馈到第二接收单元;
所述第二接收单元,与所述反馈单元和第二处理单元相连,用于第三线程接收所述第一处理结果,并通知第二处理单元;
所述第二处理单元,与所述第二接收单元相连,用于第三线程根据所述第一处理结果生成第二处理结果。
7.根据权利要求6所述的异步过程调用的系统,其特征在于,所述第一处理模块还包括创建单元;所述第三处理模块还包括资源抢占单元和资源返还单元;
所述创建单元,与所述请求单元相连,用于所述第一线程初始化时创建第三线程,且所述第三线程的优先级高于第一线程的优先级;
所述资源抢占单元,与所述第二接收单元和第二处理单元相连,用于所述第三线程抢占第一线程的CPU资源,并通知第二处理单元;
所述第二处理单元,与所述资源抢占单元和资源返还单元相连,用于接收所述第二处理单元的通知,由第三线程继续处理所述第一处理结果,并生成第二处理结果,同时通知所述资源返还单元;
所述资源返还单元,与所述第二处理单元相连,用于第三线程返还CPU资源到所述第一线程。
8.根据权利要求7所述的异步过程调用的系统,其特征在于,所述第三处理模块还包括消息队列单元;
所述反馈单元,与所述第一处理单元和消息队列单元相连,用于将所述第一处理结果顺序发送到消息队列单元;
所述消息队列单元,与所述反馈单元与第二接收单元相连,用于顺序将接收到的第一处理结果存放到第三线程中的消息队列;
所述第二接收单元还用于所述第三线程根据消息队列中消息的排列,顺序获取所述消息;
所述第二处理单元还用于所述第三线程继续处理所述消息,并生成第二处理结果。
9.根据权利要求8所述的异步过程调用的系统,其特征在于,所述第一处理模块还包括第一状态单元;所述第三处理模块还包括判断单元和第二状态单元;
所述第一状态单元,与所述执行单元、资源抢占单元和资源返还单元相连,用于记录第一线程的运行状态,当第一线程执行指令时,则将所述运行状态置为运行态;当第一线程的CPU资源被第三线程抢占后,则将所述运行状态置为就绪态;当CPU资源返还到第一线程后,则将所述运行状态置为运行态;
所述判断单元,与所述消息队列单元、第二接收单元、第二处理单元、资源返还单元和第二状态单元相连,用于所述第三线程生成第二处理结果后,判断第三线程消息队列中是否有等待处理的消息,如果是,则通知第二接收单元;如果否,则通知资源返还单元和第二状态单元;
所述第二接收单元,还用于接收所述判断单元的通知,顺序获取所述消息;
所述消息队列单元还用于当接收到的第一处理结果并存放到第三线程中的消息队列时,则通知第二状态单元;
所述创建单元,还用于创建第三线程后,通知所述第二状态单元;
所述第二状态单元,与所述创建单元、判断单元和消息队列单元相连,用于接收所述创建单元的通知,并将所述第三线程的运行状态置为等待消息状态;还用于接收所述消息队列单元的通知,并将所述第三线程的运行状态置为运行态;还用于接收所述判断单元的通知,并将所述第三线程的运行状态置为等待消息状态。
10.一种异步过程调用的终端设备,其特征在于,所述的终端设备包括权利要求6-9任一种所述的异步过程调用的系统。
CN201110437463.0A 2011-12-23 2011-12-23 一种异步过程调用的方法、系统和终端设备 Expired - Fee Related CN102567111B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110437463.0A CN102567111B (zh) 2011-12-23 2011-12-23 一种异步过程调用的方法、系统和终端设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110437463.0A CN102567111B (zh) 2011-12-23 2011-12-23 一种异步过程调用的方法、系统和终端设备

Publications (2)

Publication Number Publication Date
CN102567111A true CN102567111A (zh) 2012-07-11
CN102567111B CN102567111B (zh) 2017-10-27

Family

ID=46412599

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110437463.0A Expired - Fee Related CN102567111B (zh) 2011-12-23 2011-12-23 一种异步过程调用的方法、系统和终端设备

Country Status (1)

Country Link
CN (1) CN102567111B (zh)

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104601523A (zh) * 2013-10-31 2015-05-06 腾讯科技(深圳)有限公司 一种传输数据的方法及装置
CN104917833A (zh) * 2015-06-08 2015-09-16 北京集奥聚合网络技术有限公司 一种基于nio请求的异步信息处理方法
CN105516086A (zh) * 2015-11-25 2016-04-20 广州华多网络科技有限公司 业务处理方法及装置
CN105550051A (zh) * 2015-12-25 2016-05-04 北京奇虎科技有限公司 业务请求的异步处理方法及装置
CN106371900A (zh) * 2015-07-23 2017-02-01 腾讯科技(深圳)有限公司 一种实现异步调用的数据处理方法及装置
CN106445692A (zh) * 2015-08-12 2017-02-22 腾讯科技(深圳)有限公司 一种网络服务控制方法及装置
CN106484548A (zh) * 2016-10-20 2017-03-08 济南浪潮高新科技投资发展有限公司 一种基于异步回调机制的动作编排请求响应处理方法
CN106775699A (zh) * 2016-12-09 2017-05-31 武汉斗鱼网络科技有限公司 在异步线程中更新ui的方法
CN107133112A (zh) * 2017-04-28 2017-09-05 维沃移动通信有限公司 一种异步处理fsync的方法及移动终端
CN107239417A (zh) * 2017-05-27 2017-10-10 烽火通信科技股份有限公司 基于异步事件框架机制处理低速外设访问的系统及方法
CN107888637A (zh) * 2016-09-30 2018-04-06 阿里巴巴集团控股有限公司 拉取消息的方法、装置及系统
CN108809741A (zh) * 2017-04-27 2018-11-13 长城汽车股份有限公司 Can总线的测试方法及装置
WO2019000791A1 (zh) * 2017-06-30 2019-01-03 武汉斗鱼网络科技有限公司 一种以异步方式进行远程过程调用的方法及装置
CN109324916A (zh) * 2018-08-09 2019-02-12 武汉斗鱼网络科技有限公司 一种任务执行方法和装置
CN109495303A (zh) * 2018-11-19 2019-03-19 广州开信通讯系统有限公司 获取设备参量信息的方法、设备网络管理装置及系统、电子装置和存储介质
CN109542642A (zh) * 2018-11-15 2019-03-29 网宿科技股份有限公司 一种前端任务处理的方法及装置
CN109558254A (zh) * 2018-11-21 2019-04-02 北京京东尚科信息技术有限公司 异步回调方法、系统、装置及计算机可读存储介质
CN109918209A (zh) * 2019-01-28 2019-06-21 深兰科技(上海)有限公司 一种线程间通信的方法和设备
CN110659140A (zh) * 2018-06-30 2020-01-07 武汉斗鱼网络科技有限公司 一种指令执行的方法以及相关设备
CN110688203A (zh) * 2018-07-05 2020-01-14 武汉斗鱼网络科技有限公司 一种任务执行方法和装置
CN111143085A (zh) * 2019-11-28 2020-05-12 浪潮金融信息技术有限公司 一种实现多应用并发调用硬件的方法
CN111522605A (zh) * 2020-04-16 2020-08-11 艾普阳科技(深圳)有限公司 一种本地过程调用方法、装置、设备及介质
CN111880944A (zh) * 2020-06-15 2020-11-03 视联动力信息技术股份有限公司 数据处理方法、装置、会议管理调度系统及计算机介质
CN116501476A (zh) * 2023-06-28 2023-07-28 成都赛力斯科技有限公司 linux通用字符设备处理方法、装置、设备和介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109240811B (zh) * 2018-08-09 2020-07-31 武汉斗鱼网络科技有限公司 一种任务执行方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1592886A (zh) * 2000-11-24 2005-03-09 凯萨罗恩产品公司 通过虚拟线程执行计算机多任务的方法及装置
CN1975680A (zh) * 2006-11-27 2007-06-06 浙江大学 基于Java的进程间异步通信的实现方法
US20080082965A1 (en) * 2006-09-29 2008-04-03 International Business Machines Corporation Providing globalization functionalities for javascript applications
CN101770394A (zh) * 2008-12-29 2010-07-07 上海科泰世纪科技有限公司 基于构件接口的异步调用方法
US20100217941A1 (en) * 2005-08-10 2010-08-26 Symbian Software Ltd. Improving the efficiency of files sever requests in a computing device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1592886A (zh) * 2000-11-24 2005-03-09 凯萨罗恩产品公司 通过虚拟线程执行计算机多任务的方法及装置
US20100217941A1 (en) * 2005-08-10 2010-08-26 Symbian Software Ltd. Improving the efficiency of files sever requests in a computing device
US20080082965A1 (en) * 2006-09-29 2008-04-03 International Business Machines Corporation Providing globalization functionalities for javascript applications
CN1975680A (zh) * 2006-11-27 2007-06-06 浙江大学 基于Java的进程间异步通信的实现方法
CN101770394A (zh) * 2008-12-29 2010-07-07 上海科泰世纪科技有限公司 基于构件接口的异步调用方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
陈廷彬: "WebServices异步调用模型的研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104601523A (zh) * 2013-10-31 2015-05-06 腾讯科技(深圳)有限公司 一种传输数据的方法及装置
CN104601523B (zh) * 2013-10-31 2019-02-22 腾讯科技(深圳)有限公司 一种传输数据的方法及装置
CN104917833A (zh) * 2015-06-08 2015-09-16 北京集奥聚合网络技术有限公司 一种基于nio请求的异步信息处理方法
CN106371900A (zh) * 2015-07-23 2017-02-01 腾讯科技(深圳)有限公司 一种实现异步调用的数据处理方法及装置
CN106371900B (zh) * 2015-07-23 2020-06-05 腾讯科技(深圳)有限公司 一种实现异步调用的数据处理方法及装置
CN106445692A (zh) * 2015-08-12 2017-02-22 腾讯科技(深圳)有限公司 一种网络服务控制方法及装置
CN106445692B (zh) * 2015-08-12 2020-07-24 腾讯科技(深圳)有限公司 一种网络服务控制方法及装置
CN105516086A (zh) * 2015-11-25 2016-04-20 广州华多网络科技有限公司 业务处理方法及装置
CN105516086B (zh) * 2015-11-25 2019-06-07 广州华多网络科技有限公司 业务处理方法及装置
CN105550051B (zh) * 2015-12-25 2019-02-01 北京奇虎科技有限公司 业务请求的异步处理方法及装置
CN105550051A (zh) * 2015-12-25 2016-05-04 北京奇虎科技有限公司 业务请求的异步处理方法及装置
CN107888637A (zh) * 2016-09-30 2018-04-06 阿里巴巴集团控股有限公司 拉取消息的方法、装置及系统
CN106484548A (zh) * 2016-10-20 2017-03-08 济南浪潮高新科技投资发展有限公司 一种基于异步回调机制的动作编排请求响应处理方法
CN106775699A (zh) * 2016-12-09 2017-05-31 武汉斗鱼网络科技有限公司 在异步线程中更新ui的方法
CN108809741A (zh) * 2017-04-27 2018-11-13 长城汽车股份有限公司 Can总线的测试方法及装置
CN107133112A (zh) * 2017-04-28 2017-09-05 维沃移动通信有限公司 一种异步处理fsync的方法及移动终端
CN107133112B (zh) * 2017-04-28 2019-12-03 维沃移动通信有限公司 一种异步处理fsync的方法及移动终端
CN107239417A (zh) * 2017-05-27 2017-10-10 烽火通信科技股份有限公司 基于异步事件框架机制处理低速外设访问的系统及方法
WO2019000791A1 (zh) * 2017-06-30 2019-01-03 武汉斗鱼网络科技有限公司 一种以异步方式进行远程过程调用的方法及装置
CN110659140A (zh) * 2018-06-30 2020-01-07 武汉斗鱼网络科技有限公司 一种指令执行的方法以及相关设备
CN110659140B (zh) * 2018-06-30 2022-01-04 武汉斗鱼网络科技有限公司 一种指令执行的方法以及相关设备
CN110688203B (zh) * 2018-07-05 2022-05-13 武汉斗鱼网络科技有限公司 一种任务执行方法和装置
CN110688203A (zh) * 2018-07-05 2020-01-14 武汉斗鱼网络科技有限公司 一种任务执行方法和装置
CN109324916B (zh) * 2018-08-09 2022-02-08 武汉斗鱼网络科技有限公司 一种任务执行方法和装置
CN109324916A (zh) * 2018-08-09 2019-02-12 武汉斗鱼网络科技有限公司 一种任务执行方法和装置
CN109542642A (zh) * 2018-11-15 2019-03-29 网宿科技股份有限公司 一种前端任务处理的方法及装置
CN109495303A (zh) * 2018-11-19 2019-03-19 广州开信通讯系统有限公司 获取设备参量信息的方法、设备网络管理装置及系统、电子装置和存储介质
CN109558254A (zh) * 2018-11-21 2019-04-02 北京京东尚科信息技术有限公司 异步回调方法、系统、装置及计算机可读存储介质
CN109558254B (zh) * 2018-11-21 2021-04-30 北京京东尚科信息技术有限公司 异步回调方法、系统、装置及计算机可读存储介质
CN109918209B (zh) * 2019-01-28 2021-02-02 深兰科技(上海)有限公司 一种线程间通信的方法和设备
CN109918209A (zh) * 2019-01-28 2019-06-21 深兰科技(上海)有限公司 一种线程间通信的方法和设备
CN111143085A (zh) * 2019-11-28 2020-05-12 浪潮金融信息技术有限公司 一种实现多应用并发调用硬件的方法
CN111143085B (zh) * 2019-11-28 2022-08-09 浪潮金融信息技术有限公司 一种实现多应用并发调用硬件的方法
CN111522605A (zh) * 2020-04-16 2020-08-11 艾普阳科技(深圳)有限公司 一种本地过程调用方法、装置、设备及介质
CN111522605B (zh) * 2020-04-16 2022-07-29 艾普阳科技(深圳)有限公司 一种本地过程调用方法、装置、设备及介质
CN111880944A (zh) * 2020-06-15 2020-11-03 视联动力信息技术股份有限公司 数据处理方法、装置、会议管理调度系统及计算机介质
CN116501476A (zh) * 2023-06-28 2023-07-28 成都赛力斯科技有限公司 linux通用字符设备处理方法、装置、设备和介质
CN116501476B (zh) * 2023-06-28 2023-09-12 成都赛力斯科技有限公司 linux通用字符设备处理方法、装置、设备和介质

Also Published As

Publication number Publication date
CN102567111B (zh) 2017-10-27

Similar Documents

Publication Publication Date Title
CN102567111A (zh) 一种异步过程调用的方法、系统和终端设备
CN108647104B (zh) 请求处理方法、服务器及计算机可读存储介质
CN106161537B (zh) 远程过程调用的处理方法、装置、系统及电子设备
US9218222B2 (en) Physical manager of synchronization barrier between multiple processes
CN102455940B (zh) 一种定时器和异步事件的处理方法及系统
CN103942178A (zh) 多核处理器上实时操作系统与非实时操作系统之间的通信方法
CN102323894B (zh) 企业分布式应用间实现非阻塞方式相互调用的系统及方法
CN104954411A (zh) 分布式系统共享网络资源的方法、终端及系统
US20110107344A1 (en) Multi-core apparatus and load balancing method thereof
JP2006072591A (ja) 仮想計算機制御方法
CN107562685B (zh) 一种基于延时补偿的多核处理器核心间数据交互的方法
CN117149414A (zh) 一种任务处理方法、装置、电子设备及可读存储介质
CN101189579B (zh) 用于多线程处理的使用信号量的方法和装置
CN105579963B (zh) 任务处理装置、电子设备及方法
CN109002286A (zh) 基于同步编程的数据异步处理方法及装置
CN102117261B (zh) 一种芯片内部处理器之间的通信方法
WO2023185093A1 (zh) 外围设备的交互方法、外围设备、主控制器和存储介质
JP2017062540A (ja) 片方向オペレーティングシステム間通信システム及びプログラム
CN102662739B (zh) 实现函数调用的方法和装置
CN101997777A (zh) 中断处理方法、装置和网络设备
CN111143085B (zh) 一种实现多应用并发调用硬件的方法
CN116016555A (zh) 一种消息同步方法、装置、设备及计算机存储介质
CN103399949B (zh) 一种数据库存储块状态控制方法和装置
CN102681881B (zh) 跨机调度方法及其系统
JP2809209B2 (ja) プロセス間通信方式

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C53 Correction of patent of invention or patent application
CB02 Change of applicant information

Address after: 19, building 18, Changhong technology building, 518057 South twelve Road, South tech Zone, Nanshan District hi tech Zone, Guangdong, Shenzhen

Applicant after: SHENZHEN TEMOBI TECHNOLOGY CO., LTD.

Address before: 19, building 18, Changhong technology building, 518057 South twelve Road, South tech Zone, Nanshan District hi tech Zone, Guangdong, Shenzhen

Applicant before: Shenzhen Temobi Science & Tech Development Co.,Ltd.

COR Change of bibliographic data

Free format text: CORRECT: APPLICANT; FROM: SHENZHEN TEMOBI SCIENCE + TECHNOLOGY CO., LTD. TO: SHENZHEN RONGCHANG TIANXIA TECHNOLOGY CO., LTD.

C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: RONGCHUANG TIANXIA (SHANGHAI) TECHNOLOGY DEVELOPME

Free format text: FORMER OWNER: SHENZHEN RONGCHANG TIANXIA TECHNOLOGY CO., LTD.

Effective date: 20150612

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150612

Address after: 200433 Shanghai City, Yangpu District Wei Road No. 6 room 502-8

Applicant after: World (Shanghai) Technology Development Co., Ltd.

Address before: 19, building 18, Changhong technology building, 518057 South twelve Road, South tech Zone, Nanshan District hi tech Zone, Guangdong, Shenzhen

Applicant before: SHENZHEN TEMOBI TECHNOLOGY CO., LTD.

GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20171027

Termination date: 20181223

CF01 Termination of patent right due to non-payment of annual fee