一种提高服务器的稳定性的方法、装置及服务器技术领域
本发明涉及服务器技术领域,尤其涉及一种提高服务器的稳定性的方法、
装置及服务器。
背景技术
随着计算机技术的发展,硬件的性能得到了巨大的提高,使得多线程的应
用越来越广泛。使用多线程可以使得多个执行路径并行执行,降低了程序开发
的复杂度,提高了软件的性能,多线程的软件程序可以充分利用处理器资源,
获得更好的性能。
服务器中采用多线程的软件程序实时接收大量客户端发送的请求,并及时
响应返回数据。目前服务器主要采用异步多线程的方式处理,比如:A线程将
访问请求发给服务器处理后,不再跟进后续的流程,而由B线程返回对应的处
理结果,这种情况下,容易因为线程之间的资源占用冲突,导致服务器端程序
崩溃。
发明内容
本发明要解决的技术问题是,提供一种提高服务器的稳定性的方法、装置
及服务器,克服现有技术中容易发生线程之间资源占用冲突而导致服务器所提
供的服务不稳定的缺陷。
本发明采用的技术方案是,所述提高服务器的稳定性的方法,设用于接收
客户端访问请求的线程组中包含第一线程,用于处理客户端访问请求的线程组
中包含第二线程,该方法包括:
第二线程处理完任一访问请求后,将处理结果存储到指定的存储空间;
第一线程从所述指定的存储空间获取所述处理结果并进行返回。
进一步的,第二线程处理完任一访问请求后,将处理结果存储到指定的存
储空间,包括:
在内存空间中为各第一线程建立存储队列;
将任一访问请求分配给第二线程处理的同时,将接收所述访问请求的第一
线程的标识告知第二线程,供第二线程处理完所述访问请求后,基于所述标识
将处理结果存入对应的第一线程的存储队列中。
进一步的,第一线程从所述指定的存储空间获取所述处理结果并进行返回,
包括:
为所述第一线程设置周期性的超时事件,以使第一线程在所述超时事件到
来时从存储队列中读取所述处理结果并进行返回。
进一步的,所述超时事件的周期为5~10毫秒。
进一步的,所述方法,还包括:
在返回所述处理结果之后,由所述第一线程将所述指定的存储空间中的所
述处理结果清除。
本发明还提供一种提高服务器的稳定性的装置,设用于接收客户端访问请
求的线程组中包含第一线程,用于处理客户端访问请求的线程组中包含第二线
程,该装置包括:
第一调用模块,用于调用第二线程执行以下操作:处理完任一访问请求后,
将处理结果存储到指定的存储空间;
第二调用模块,用于调用第一线程从所述指定的存储空间获取所述处理结
果并进行返回。
进一步的,所述第一调用模块,包括:
建立模块,用于在内存空间中为各第一线程建立存储队列;
分配告知模块,用于将任一访问请求分配给第二线程处理的同时,将接收
所述访问请求的第一线程的标识告知第二线程,供第二线程处理完所述访问请
求后,基于所述标识将处理结果存入对应的第一线程的存储队列中。
进一步的,所述第二调用模块,还用于:
为所述第一线程设置周期性的超时事件,以使第一线程在所述超时事件到
来时从存储队列中读取所述处理结果并进行返回;所述超时事件的周期为5~10
毫秒。
进一步的,所述第二调用模块,还用于:
在返回所述处理结果之后,继续调用所述第一线程将所述指定的存储空间
中的所述处理结果清除。
本发明还提供一种服务器,包括上述提高服务器的稳定性的装置。
采用上述技术方案,本发明至少具有下列优点:
本发明所述提高服务器的稳定性的方法、装置及服务器,通过设置指定的
存储空间,让用于接收客户端访问请求的线程以及用于处理客户端访问请求的
线程均可以对该指定的存储空间进行读写,使得单一线程对处理结果进行接收
和返回成为可能,避免跨线程处理,减少了服务器的堵塞。
附图说明
图1为本发明第一实施例的提高服务器的稳定性的方法流程图;
图2为本发明第三实施例的提高服务器的稳定性的装置组成结构示意图;
图3为本发明第四实施例的提高服务器的稳定性的装置组成结构示意图。
具体实施方式
为更进一步阐述本发明为达成预定目的所采取的技术手段及功效,以下结
合附图及较佳实施例,对本发明进行详细说明如后。
本发明第一实施例,一种提高服务器的稳定性的方法,设用于接收客户端
访问请求的线程组中包含第一线程,用于处理客户端访问请求的线程组中包含
第二线程,如图1所示,该方法包括以下具体步骤:
步骤S101,第二线程处理完任一访问请求后,将处理结果存储到指定的存
储空间;其中,对于同一个访问请求,可以通过多个第二线程进行多线程处理。
步骤S102,第一线程从所述指定的存储空间获取所述处理结果并进行返回。
优选的,步骤S102包括:
为所述第一线程设置周期性的超时事件,以使第一线程在所述超时事件到
来时从存储队列中读取所述处理结果并进行返回。所述超时事件的周期为5~10
毫秒。
优选的,所述方法,还包括:
在返回所述处理结果之后,由所述第一线程将所述指定的存储空间中的所
述处理结果清除。
本发明第二实施例,一种提高服务器的稳定性的方法,本实施例所述方法
与第一实施例大致相同,区别在于,本实施例着重介绍的是当用于接收客户端
访问请求的线程组中包含的第一线程为两个以上时的技术方案。
本实施例在步骤S101中,第二线程处理完任一访问请求后,将处理结果存
储到指定的存储空间,包括:
在内存空间中为各第一线程建立存储队列;
将任一访问请求分配给第二线程处理的同时,将接收所述访问请求的第一
线程的标识告知第二线程,供第二线程处理完所述访问请求后,基于所述标识
将处理结果存入对应的第一线程的存储队列中。
本发明第三实施例,与第一实施例对应,本实施例介绍一种提高服务器的
稳定性的装置,设用于接收客户端访问请求的线程组中包含第一线程,用于处
理客户端访问请求的线程组中包含第二线程,如图2所示,该装置包括以下组
成部分:
第一调用模块201,用于调用第二线程执行以下操作:处理完任一访问请求
后,将处理结果存储到指定的存储空间;
第二调用模块202,用于调用第一线程从所述指定的存储空间获取所述处理
结果并进行返回。
优选的,第二调用模块202,还用于:
为所述第一线程设置周期性的超时事件,以使第一线程在所述超时事件到
来时从存储队列中读取所述处理结果并进行返回;所述超时事件的周期为5~10
毫秒。
优选的,第二调用模块202,还用于:
在返回所述处理结果之后,继续调用所述第一线程将所述指定的存储空间
中的所述处理结果清除。
本发明第四实施例,与第二实施例对应的介绍一种提高服务器的稳定性的
装置,本实施例所述装置与第三实施例大致相同,区别在于,本实施例着重介
绍的是当用于接收客户端访问请求的线程组中包含的第一线程为两个以上时的
技术方案。
在本实施例中,如图3所示,第一调用模块201,包括:
建立模块20,用于在内存空间中为各第一线程建立存储队列;
分配告知模块21,用于将任一访问请求分配给第二线程处理的同时,将接
收所述访问请求的第一线程的标识告知第二线程,供第二线程处理完所述访问
请求后,基于所述标识将处理结果存入对应的第一线程的存储队列中。
本发明第五实施例,一种服务器,可以作为实体装置来理解,包括上述提
高服务器的稳定性的装置。
本发明第六实施例,本实施例是在上述实施例的基础上,介绍一个本发明
的应用实例。
本实施例的提高服务器的稳定性的方案的实现如下:
预先建立异步网络框架库之外的内存空间存储队列,用于记录线程的标识
以及返回数据,每个第一线程对应一个存储队列,多个第二线程可以对该存储
队列进行写操作,而对应的唯一的第一线程可以对该存储队列执行读操作。
第一线程A接到客户端的访问请求,标识该访问请求是第一线程A发过来
的;
一个或者多个第二线程B处理完与第一线程A相关的该访问请求,得到处
理结果的数据之后,根据标识,找到接收该访问请求的第一线程A对应的存储
队列;
第二线程B将处理结果的数据存储到该存储队列里面;
其中第一线程A专用于处理网络事件,如果客户端没有网络事件,则第一
线程A处于阻塞状态,无法处理存储队列中数据,不能接受响应。因此,需要
预先给第一线程A设定一个超时的事件,当超时事件触发时候,读取存储队列
中数据即第二线程B处理后的数据,并由第一线程A返回对应的处理结果数据。
其中超时时间很短,如5到10毫秒,不会造成延时。
本实施例通过创建一个与第一线程A对应的存储队列,让第二线程B在处
理完访问请求后,基于第一线程A的标识将处理结果数据存储到第一线程A对
应的存储队列中,供第一线程A从该队列中读取到处理结果数据后返回,即实
现了由第一线程A完成接收访问请求、返回处理结果数据的工作,由第二线程
B完成业务逻辑、将处理结果存储到指定的存储空间。
本实施例所要实现的目的是:在已经由第二线程B的情况下,使第一线程
A能够返回第二线程B处理的数据,即实现了第一线程A发送的访问请求,在
其它线程处理之后,仍能够使第一线程A自身返回对应的处理结果。避免了现
有技术中,采用其它线程返回对应结果造成的线程之间资源的占用冲突,可以
减少服务器程序崩溃,用于提高服务端的稳定性,持续稳定的提供服务。
通过具体实施方式的说明,应当可对本发明为达成预定目的所采取的技术
手段及功效得以更加深入且具体的了解,然而所附图示仅是提供参考与说明之
用,并非用来对本发明加以限制。