多线程管理无线接入点的方法与系统与流程

文档序号:12719179阅读:397来源:国知局
多线程管理无线接入点的方法与系统与流程

本发明涉及无线通信技术领域,特别是涉及多线程管理无线接入点的方法与系统。



背景技术:

目前,移动互联网是一种趋势,商场、酒店、车站等公共场所都部署了无线热点为移动终端提供WIFI服务。

部署的模式以分布式集中管理的架构为主流,通过服务器统一管理分散在各个地方的AP(无线接入点),因此在管理的时候,很多个AP会同时与服务器进行简单的连接请求,以及数据业务上的交互,高并发的请求会给服务器造成很多压力,如果创建单线程处理AP的请求,那不断频繁地创建销毁线程需要很大的开销,严重制约移动互联网数据交互的效率。



技术实现要素:

基于此,有必要针对目前尚无一种多线程管理无线接入点的方法,造成线程开销大,严重制约移动互联网数据交互的效率的问题,提供一种多线程管理无线接入点的方法实现对多线程的管理,确保移动互联网数据交互的效率。

一种多线程管理无线接入点的方法,包括步骤:

创建服务器监听线程,监听服务器端口接入请求;

当有无线接入点请求连接服务器时,创建工作线程,并将创建的工作线程加入线程池;

当无线接入点与服务器有数据交互时,将交互的数据存储于链表;

当线程池存在空闲线程时,调用空闲的工作线程处理数据。

一种多线程管理无线接入点的系统,包括:

创建模块,用于创建服务器监听线程,监听服务器端口接入请求;

接入模块,用于当有无线接入点请求连接服务器时,创建工作线程,并将创建的工作线程加入线程池;

存储模块,用于当无线接入点与服务器有数据交互时,将交互的数据存储于链表;

处理模块,用于当线程池存在空闲线程时,调用空闲的工作线程处理数据。

本发明多线程管理无线接入点的方法与系统,创建服务器监听线程,监听服务器端口接入请求,当有无线接入点请求连接服务器时,创建工作线程,并将创建的工作线程加入线程池,当无线接入点与服务器有数据交互时,将交互的数据存储于链表,当线程池存在空闲线程时,调用空闲的工作线程处理数据。整个过程中,线程池内的工作线程数量根据无线接入点的数量来决定的,当无线接入点请求连接时才会创建新的工作线程,只需要管理固定数量的无线接入点,所以由无线接入点数量决定工作线程的数量,可以减少创建多余线程的资源浪费,也足以管理无线接入点,即实现对多线程的管理,确保移动互联网数据交互的效率。

附图说明

图1为本发明多线程管理无线接入点的方法第一个实施例的流程示意图;

图2为本发明多线程管理无线接入点的方法第二个实施例的流程示意图;

图3为本发明多线程管理无线接入点的方法其中一个实施例中socket通信建立过程示意图;

图4为本发明多线程管理无线接入点的系统第一个实施例的结构示意图;

图5为本发明多线程管理无线接入点的系统第二个实施例的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下根据附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施仅仅用以解释本发明,并不限定本发明。

如图1所示,一种多线程管理无线接入点的方法,包括步骤:

S100:创建服务器监听线程,监听服务器端口接入请求。

非必要的,这里可以采用周期性循环监听服务器端口接入请求,周期性监听一方面可以节约监听消耗能量,另一方面也能减少数据处理量。S200:当有无线接入点请求连接服务器时,创建工作线程,并将创建的工作线程加入线程池。

线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程,每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值。超过最大值的线程可以排队,但他们要等到其他线程完成后才启动。

正如之前所述,服务器端会创建监听线程,循环监听服务器端口接入请求。当AP(无线接入点)请求连接服务器时,服务器创建对应此AP的工作线程,并加入到线程池中等待触发调用,线程池中的线程处于睡眠状态,当出现上传数据或者下发数据情况时,才会触发运行状态,线程池内的工作线程数量是根据AP的数量来决定的,当AP请求连接时才会创建新的工作线程,只需要管理固定数量的AP,所以由AP数量决定工作线程的数量,可以减少创建多余线程的资源浪费,也足以管理AP。

S300:当无线接入点与服务器有数据交互时,将交互的数据存储于链表。

无线接入点与服务器之间的数据交互主要包括无线接入点上传到服务器的上传数据和服务器下发到无线接入点的下发数据,链表可以分为接收链表和发送链表。在实际操作中,服务器接收AP数据或者下发数据时,都会将数据先放入链表中,因为数据都是分包发送或者接收的,不连续的,需要预先缓存起来。当无线接入点向服务器上传数据时,将数据放入接收链表,当服务器向无线接入点下发数据时,将数据放入发送链表。

S400:当线程池存在空闲线程时,调用空闲的工作线程处理数据。

循环检测线程池是否存在空闲线程,若存在,则根据任务队列调用工作线程并发处理任务。只有当线程池存在空闲线程时,才调用空闲的工作线程处理数据,这样一方面可以充分利用工作线程处理能力资源,避免浪费,另一方面,防止工作线程处理事项过多,处理过程混乱造成数据处理阻塞。

本发明多线程管理无线接入点的方法,创建服务器监听线程,监听服务器端口接入请求,当有无线接入点请求连接服务器时,创建工作线程,并将创建的工作线程加入线程池,当无线接入点与服务器有数据交互时,将交互的数据存储于链表,当线程池存在空闲线程时,调用空闲的工作线程处理数据。整个过程中,线程池内的工作线程数量根据无线接入点的数量来决定的,当无线接入点请求连接时才会创建新的工作线程,只需要管理固定数量的无线接入点,所以由无线接入点数量决定工作线程的数量,可以减少创建多余线程的资源浪费,也足以管理无线接入点,即实现对多线程的管理,确保移动互联网数据交互的效率。

如图2所示,在其中一个实施例中,步骤S100之前还有步骤:

S110:创建无线接入点与服务器的socket通信。

服务器管理AP的前途是建立socket通信,具体过程是,服务器调用socket创建一个文件描述符,函数bind将次文件描述符与服务器地址和端口绑定在一起,调用listen将端口转换成监听socket端口等待连接请求,然后调用accept来接受AP的请求。在通信的另外一端,AP调用函数socket创建一个文件描述符,然后调用connect来服务器建立连接。

具体如图3所示,无线接入点创建文件描述符,发送连接请求,阻塞等待服务器应答。服务器端创建文件描述符,服务器地址和端口号与文件描述符绑定,转换成监听socket端口,监听端口接收连接请求。

在其中一个实施例中,所述当无线接入点与服务器有数据交互时,将交互的数据存储于链表具体包括步骤:

当无线接入点向服务器上传数据时,将数据放入接收链表,并加入到可写任务队列等待处理;

当服务器向无线接入点下发数据时,将数据放入发送链表,并加入到可写任务队列等待处理。

之前所述的链表包括接收链表和发送链表两个部分。

在其中一个实施例中,当无线接入点与服务器有数据交互时,将交互的数据存储于链表具体包括步骤:

当无线接入点向服务器上传数据时,socket描述符上有上传数据可读,将接收到的数据放入到接收链表中,并将socket描述符加入可读任务队列等待处理;

当服务器向无线接入点下发数据时,socket描述符上有下发数据可写,将下发数据存储到发送链表中,并将socket描述符加入可写任务队列等待处理。

当AP有上传数据,则socket描述符上有数据可读,则将接收到的数据放入到接收链表中,并将该socket描述符加入可读任务队列,工作线程再从工作队列中获取socket描述符处理数据。当服务器端需要发送数据给AP,则socket描述符上有数据可写,则将数据存储到发送链表中,并将socket描述符加入可写任务队列,工作线程再从工作队列中获取socket描述符处理数据。服务器会不断监听socket描述符,当有读/写操作时,将socket描述符加入到任务队列中,该socket描述符对应的任务属性同时标记为读/写。服务器调用空闲的工作线程处理任务时,就是根据该属性进行相应的读/写操作。服务器调用工作线程处理任务是并发进行的,多个线程被快速轮询执行。

在其中一个实施例中,所述当线程池存在空闲线程时,调用空闲的工作线程处理数据具体为:

当线程池存在空闲线程时,调用空闲的工作线程从任务队列中获取socket描述符处理数据,其中,所述任务队列包括可读任务队列和可写任务队列。

服务器接收AP数据或者下发数据时,都会将数据先放入链表中,因为数据都是分包发送或者接收的,不连续的,需要预先缓存起来,而且每个AP对应的数据链表由相应的socket描述符唯一指向。服务器在调用空闲工作线程接收数据或者发送数据时,就根据描述符分包获取对应链表缓存的数据。数据都是以TLV格式(Type/Length/Value)封装,服务器接收完全数据之后,解析出数据中的Type类型,即可知道对AP进行相应的管理操作。如下表1所示,列出几个定义的主要AP管理功能的Type类型。

表1

如图4所示,一种多线程管理无线接入点的系统,包括:

创建模块100,用于创建服务器监听线程,监听服务器端口接入请求;

接入模块200,用于当有无线接入点请求连接服务器时,创建工作线程,并将创建的工作线程加入线程池;

存储模块300,用于当无线接入点与服务器有数据交互时,将交互的数据存储于链表;

处理模块400,用于当线程池存在空闲线程时,调用空闲的工作线程处理数据。

本发明多线程管理无线接入点的系统,创建模块100创建服务器监听线程,监听服务器端口接入请求,当有无线接入点请求连接服务器时,接入模块200创建工作线程,并将创建的工作线程加入线程池,当无线接入点与服务器有数据交互时,存储模块300将交互的数据存储于链表,当线程池存在空闲线程时,处理模块400调用空闲的工作线程处理数据。整个过程中,线程池内的工作线程数量根据无线接入点的数量来决定的,当无线接入点请求连接时才会创建新的工作线程,只需要管理固定数量的无线接入点,所以由无线接入点数量决定工作线程的数量,可以减少创建多余线程的资源浪费,也足以管理无线接入点,即实现对多线程的管理,确保移动互联网数据交互的效率。

如图5所示,在其中一个实施例中,所述多线程管理无线接入点的系统还包括:

socket通信创建模块500,用于创建无线接入点与服务器的socket通信。

在其中一个实施例中,所述存储模块300具体包括:

第一上传存储单元,用于当无线接入点向服务器上传数据时,将数据放入接收链表,并加入到可写任务队列等待处理;

第一下发存储单元,用于当服务器向无线接入点下发数据时,将数据放入发送链表,并加入到可写任务队列等待处理。

在其中一个实施例中,所述存储模块300具体包括步骤:

第二上传存储单元,用于当无线接入点向服务器上传数据时,socket描述符上有上传数据可读,将接收到的数据放入到接收链表中,并将socket描述符加入可读任务队列等待处理;

第二下发存储单元,用于当服务器向无线接入点下发数据时,socket描述符上有下发数据可写,将下发数据存储到发送链表中,并将socket描述符加入可写任务队列等待处理。

在其中一个实施例中,所述处理模块400具体用于当线程池存在空闲线程时,调用空闲的工作线程从任务队列中获取socket描述符处理数据,其中,所述任务队列包括可读任务队列和可写任务队列。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1