发明名称 一种服务端多线程并行数据处理方法及负载均衡方法
摘要 一种服务端多线程并行数据处理方法,包括以下步骤:步骤1、服务端进程启动时,开启一个数据接收线程,开启一个数据分配线程以及开启一个包含多个数据处理线程的数据处理线程池,同时开辟一段用于存储接收到的客户端数据的动态存储区,并按照FIFO方式管理动态存储区;步骤2、数据接收线程通过socket侦听并接收客户端传过来的数据包,直接把数据包放入数据存储区,立即返回继续侦听接收客户端数据;步骤3、数据分配线程对动态存储区进行轮询。
申请公布号 CN104239149B 申请公布日期 2017.03.29
申请号 CN201410444654.3 申请日期 2012.08.31
申请人 南京工业职业技术学院 发明人 周惠;胡光永;谈璐;高红民;彭建华
分类号 G06F9/50(2006.01)I;H04L29/08(2006.01)I 主分类号 G06F9/50(2006.01)I
代理机构 南京同泽专利事务所(特殊普通合伙) 32245 代理人 石敏
主权项 一种服务端多线程并行数据处理方法,其特征在于包括以下步骤:步骤1、服务端进程启动时,开启一个数据接收线程(R),开启一个数据分配线程(S)以及开启一个包含多个数据处理线程(D)的数据处理线程池,同时开辟一段用于存储接收到的客户端数据的动态存储区(BM),并按照FIFO方式管理动态存储区(BM);服务端为线程池中的每一个数据处理线程开辟一个动态存储区(SM)和一个初始值为0的计数器;步骤2、数据接收线程(R)通过socket侦听并接收客户端传过来的数据包,直接把数据包放入数据存储区(BM),立即返回继续侦听接收客户端数据;步骤3、数据分配线程(S)对动态存储区(BM)进行轮询,如果动态存储区(BM)存在数据包,则从动态存储区(BM)中依次取出数据包,同时对线程池中的数据处理线程进行轮询,循环检测每个数据处理线程的相对空闲率;如果存在当前待处理数据包个数C为0或者已处理数据包个数n为0的数据处理线程,这样的数据处理线程其相对空闲率最高,则选择其中任意一个数据处理线程,将数据包放入该数据处理线程的动态存储区(SM);否则,将新收到的数据包分配给相对空闲率最高的数据处理线程,所述数据处理线程的相对空闲率按照以下公式计算:<img file="995281dest_path_image001.GIF" wi="73" he="54" />式中,<img file="161689dest_path_image002.GIF" wi="22" he="18" />为相对空闲率;<img file="754476dest_path_image003.GIF" wi="17" he="18" />为该数据处理线程当前待处理数据包个数;<img file="398953dest_path_image004.GIF" wi="21" he="24" />为该数据处理线程在处理<i>n</i>个数据包后的数据处理效率,其表达式为如下:<img file="462593dest_path_image005.GIF" wi="275" he="106" />其中,<i>n</i>为已处理数据包个数,<img file="596640dest_path_image006.GIF" wi="19" he="29" />为该数据处理线程处理第<i>n</i>个数据包所耗费时间。
地址 210000 江苏省南京市中山东路532-2号