本发明涉及网络通信领域,具体涉及一种基于异步事件框架机制处理低速外设访问的系统和一种基于异步事件框架机制处理低速外设访问的方法。
背景技术:
数据通信设备的软件在运行的过程中为了保持良好的并发能力和可扩展性,通常采用的是事件驱动的软件框架,随着数据通信设备的功能需求不断增加,原有的数据通信设备的系统不断出现一些性能问题,影响系统的吞吐量和容量,较为突出的是消息驱动框架中外设访问对系统性能的影响,数据通讯设备的软件经常涉及到与低速外设,即与数据传输速度慢的设备间进行i/o(input/output,输入/输出)、写驱动等操作,这些操作使得数据通信设备软件的并发能力极大地降低。
数据通信设备由于其性能要求,数据通信设备的网络处理软件往往采用多线程的调度器模型,用于处理信令协议、表项计算和下发刷新等业务,在进行业务处理的同时,网络处理软件可能需要进行后台日志和管理软件包的处理,将后台日志和管理软件包写到磁盘中,或将计算出的表项调用驱动接口设置到芯片中,此时,数据通信设备当前的调度线程会由于i/o操作或系统调用而发生阻塞情况,使得调度线程卡顿而无法运行,只能等待数据通信设备的内核返回,其它待处理的业务模块的数据在这段时间内将无法得到调度,当数据通信设备的系统业务容量增大,数据通信设备系统的性能便会急剧下降,数据通信设备的cpu并没有在运行处理数据,且线程都在数据通信设备内核的阻塞队列当中等待唤醒的调度,从而出现卡顿等影响用户体验的问题,甚至由于信令协议处理超时,导致业务的中断。
技术实现要素:
针对现有技术中存在的缺陷,本发明的目的在于提供一种基于异步事件框架机制处理低速外设访问的系统和一种基于异步事件框架机制处理低速外设访问的方法,有效避免设备系统调用时堵塞现象的发生。
为达到以上目的,本发明采取的技术方案是:包括网络处理模块、异步事件通知框架和多个数据通信设备的外部线程:
所述网络处理模块用于将任务加入任务队列,所述任务为数据通信设备与外设间的数据i/o操作;
所述异步事件通知框架用于当任务加入任务队列后唤醒一外部线程;
所述外部线程用于从任务队列中取出任务并处理。
在上述技术方案的基础上,多个外部线程同时处理多个任务。
在上述技术方案的基础上,所述外部线程还用于将任务的处理结果反馈给网络处理模块。
本发明还公开了一种基于异步事件框架机制处理低速外设访问的方法,包括:
s1:将任务加入任务队列,所述任务为数据通信设备与外设间的数据i/o操作;
s2:判断任务队列中是否有任务,若有,则转到s3,若没有,则结束;
s3:唤醒一外部线程,同时外部线程从任务队列中取出任务并处理,然后转到s2。
在上述技术方案的基础上,所述外部线程为多个。
在上述技术方案的基础上,多个外部线程同时处理多个任务。
在上述技术方案的基础上,所述外部线程还用于将任务的处理结果反馈给数据通信设备。
与现有技术相比,本发明一种基于异步事件框架机制处理低速外设访问的系统的优点在于:针对数据通信设备与低速外设间数据i/o操作,当数据通信设备与外设间有i/o操作时,将这种容易引起阻塞操作的任务从数据通信设备的软件调度内部剥离到数据通信设备的外部线程中进行处理,这种异步的实现方式,极大地提升了数据通信系统的调度性能,同时,外部线程能够对多个任务进行同时处理,摒弃了目前大多数网络处理软件只能在统一调度器中进行问题处理的情况,增强了数据通信设备的系统性能。
本发明一种基于异步事件框架机制处理低速外设访问的方法的优先在于:基于异步事件的处理机制,针对低速外设与数据通信设备间进行数据的i/o操作,将此类操作任务剥离到数据通信设备的外部线程中进行处理,极大地提升了数据通信系统的调度性能,减少了数据通信设备的调度线程阻塞导致的数据通信设备系统卡顿情况的发生。
附图说明
图1为本发明一种基于异步事件框架机制处理低速外设访问的方法的流程图。
具体实施方式
以下结合附图对本发明作进一步详细说明。
本发明实施例提供一种基于异步事件框架机制处理低速外设访问的系统,包括网络处理模块、异步事件通知框架和多个数据通信设备的外部线程。
网络处理模块用于将任务加入任务队列,任务为数据通信设备与外设间的数据i/o操作,本发明主要针对于低速外设,即与数据通信设备间数据传输速度较慢的外部设备,针对数据通信设备与外设间的数据i/o操作的任务,本发明采用异步事件处理机制进行处理。
异步事件通知框架用于当任务加入任务队列后,唤醒一外部线程,即异步事件通知框架相当于一套异步消息的框架接口,通过“事件-唤醒”的方式实现异步通信,当任务队列被加入任务后,唤醒外部线程进行任务处理的准备。
外部线程用于从任务队列中取出任务并处理,即外部线程被异步事件通知框架唤醒后,从任务队列中取出任务并处理,同时外部线程还用于将任务的处理结果反馈给网络处理模块。
对于数据通信设备与外设间的数据i/o操作,存在多个i/o操作同时进行的情况,则每个i/o操作均为一个任务。每个任务由一个外部线程处理,且多个外部线程能够同时进行任务的处理,即多个外部线程同时处理多个任务,采用并发处理的方式,能够对多个任务进行同时处理。任务队列中加入一个任务,则异步事件通知框架唤醒一个线程,进行任务的处理;任务队列中加入2个任务,则异步事件通知框架唤醒2个外部线程,对这2个任务进行同时处理,依此类推,采用并发形式的任务处理方式。当然,线程的设置个数,能够根据实际需求进行灵活配置。
本发明实施例中,针对数据通信设备与低速外设间数据i/o操作,本发明采用异步事件机制来处理低速外设与数据通信设备间的访问,当数据通信设备与外设间有i/o操作时,将这种容易引起阻塞操作的任务从数据通信设备的软件调度内部剥离到数据通信设备的外部线程中进行处理,同时,当有任务加入到任务列表中后,唤醒外部线程进行任务处理的准备,这种异步的实现方式,使得数据通信设备的系统业务运行调度线程不会被i/o操作所阻塞,极大地提升了数据通信系统的调度性能,同时,线程能够对多个任务进行同时处理,摒弃了目前大多数网络处理软件只能在统一调度器中进行问题处理的情况,数据通信设备的系统性能增强。
本发明还提供一种基于上述基于异步事件框架机制处理低速外设访问的系统的基于异步事件框架机制处理低速外设访问的方法,包括:
s1:将任务加入任务队列,所述任务为数据通信设备与外设间的数据i/o操作;
s2:判断任务队列中是否有任务,若有,则转到s3,若没有,则结束;
s3:唤醒一外部线程,同时外部线程从任务队列中取出任务并处理,然后转到s2,线程有多个,每个任务由一个线程处理,且多个线程能够同时进行任务的处理,即多个外部线程同时处理多个任务,进行任务的多线程并发处理。
对于处理完的任务,外部线程还用于将任务的处理结果反馈给数据通信设备,即将任务的处理结果告知数据通信设备。
本发明实施例中,基于异步事件的处理机制,针对低速外设与数据通信设备间进行数据的i/o操作,容易出现的调度线程阻塞情况,将此类操作任务剥离到数据通信设备的外部线程中进行处理,同时,当有任务加入到任务列表中后,唤醒外部线程进行任务处理的准备,这种异步的实现方式,使得数据通信设备的系统业务运行调度线程不会被i/o操作所阻塞,极大地提升了数据通信系统的调度性能,减少了数据通信设备的调度线程阻塞导致的数据通信设备系统卡顿情况的发生。
当然,本发明的不仅局限于数据通信领域,对于任何消耗cpu或可能导致阻塞设备系统的任务操作都可以使用本发明中的方案进行解决。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。