CN103078811B - 一种基于多线程环境网络数据包乱序控制方法 - Google Patents
一种基于多线程环境网络数据包乱序控制方法 Download PDFInfo
- Publication number
- CN103078811B CN103078811B CN201310037379.9A CN201310037379A CN103078811B CN 103078811 B CN103078811 B CN 103078811B CN 201310037379 A CN201310037379 A CN 201310037379A CN 103078811 B CN103078811 B CN 103078811B
- Authority
- CN
- China
- Prior art keywords
- packet
- queue
- client
- record
- source
- 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.)
- Active
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于多线程环境网络数据包乱序控制方法,其特征在于,包括以下步骤:一个线程不断接收多个客户端向服务端发送的数据包放到源队列中缓存;另一个线程循环遍历源队列,每遍历一条记录就判断是否在目标队列中,若不在,就将这条记录取出放到目标队列尾部,并记下此客户端的ID,接着遍历下一条记录,若在,判断这条记录之前是否存在同一客户端的数据包在等待处理,若不存在,记下这个位置,接着遍历下一条记录,若存在,跳到等待处理的数据包位置,取出这个数据包放到目标队列尾部,接着遍历下一条记录;其他线程不断从目标队列取走排在头部的客户端的数据包进行处理。本发明所述的方法有效控制了多线程化境下的数据包的处理顺序。
Description
技术领域
本发明涉及计算机服务端多线程环境下的数据处理领域,尤其涉及一种基于多线程环境网络数据包乱序控制方法。
背景技术
在CS架构的服务端通信中,为了处理多个客户端并发的请求,往往会开启多个线程或者是线程池来处理业务,以提高服务的处理能力,如果一个客户端连续向服务器发送请求包,而且对包的先后顺序有严格的要求,在这种情况下,服务器的多线程处理就有可能打乱此客户端数据包的先后顺序,不能保证客户端的数据包顺序到达服务端,顺序返回客户端。
发明内容
针对上述技术问题,本发明设计开发了一种基于多线程环境网络数据包乱序控制方法,目的在保证客户端的数据包顺序到达服务端,顺序返回客户端,有效控制多线程化境下的数据包的处理顺序。
本发明提供的技术方案为:
一种基于多线程环境网络数据包乱序控制方法,包括以下步骤:
步骤一、一个线程不断接收多个客户端向服务端发送的多个数据包并放到源队列中缓存;
步骤二、另一个线程循环的遍历源队列,每遍历一条记录就判断这条记录是否在目标队列中,若不在目标队列中,就将这条记录取出放到目标队列尾部,并记下此客户端的ID,接着遍历下一条记录,若在目标队列中,判断这条记录之前是否存在同一客户端的数据包在等待处理,若不存在,记下这个位置,接着遍历下一条记录,若存在,跳到等待处理的数据包的位置,取出这个数据包放到目标队列尾部,接着遍历下一条记录;
步骤三、其他线程不断从目标队列取走排在头部的客户端的数据包进行处理。
优选的是,所述的基于多线程环境网络数据包乱序控制方法中,一个客户端一次向服务端发送一个数据包,所述数据包按服务端接收的先后顺序保存到源队列中。
优选的是,所述的基于多线程环境网络数据包乱序控制方法中,所述目标队列中只能保存一个客户端的一个数据包。
优选的是,所述的基于多线程环境网络数据包乱序控制方法中,当发现目标队列中有客户端的数据包被处理完成,马上从源队列中取出这个客户端等待处理的数据包填充到目标队列尾部。
优选的是,所述的基于多线程环境网络数据包乱序控制方法中,所述步骤二源队列中已经放到目标队列的记录删除后,继续从源队列头部开始遍历源队列。
本发明所述的基于多线程环境网络数据包乱序控制方法具有以下有益效果:服务端最初接收到的数据包保存在源队列中,它本身就是有序的,保证了客户端的数据包顺序到达服务端。由于目标队列保存的是一个客户端的一个数据包,不会有这个客户端的第二个数据包,因此经过遍历后,多个客户端的数据包将从源队列顺序放到目标队列中进行数据处理,保证了处理后的数据顺序返回客户端,有效控制了多线程化境下的数据包的处理顺序。
附图说明
图1是本发明所述的基于多线程环境网络数据包乱序控制方法的流程图;
图2是本发明的一个实施例的示意图。
具体实施方式
下面结合附图对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。
如图1所示,本发明提供一种基于多线程环境网络数据包乱序控制方法,包括以下步骤:
步骤一、一个线程不断接收多个客户端向服务端发送的多个数据包并放到源队列中缓存;
步骤二、另一个线程循环的遍历源队列,每遍历一条记录就判断这条记录是否在目标队列中,若不在目标队列中,就将这条记录取出放到目标队列尾部,并记下此客户端的ID,接着遍历下一条记录,若在目标队列中,判断这条记录之前是否存在同一客户端的数据包在等待处理,若不存在,记下这个位置,接着遍历下一条记录,若存在,跳到等待处理的数据包的位置,取出这个数据包放到目标队列尾部,接着遍历下一条记录;
步骤三、其他线程不断从目标队列取走排在头部的客户端的数据包进行处理。
所述的基于多线程环境网络数据包乱序控制方法中,一个客户端一次向服务端发送一个数据包,所述数据包按服务端接收的先后顺序保存到源队列中。
所述的基于多线程环境网络数据包乱序控制方法中,所述目标队列中只能保存一个客户端的一个数据包。
所述的基于多线程环境网络数据包乱序控制方法中,当发现目标队列中有客户端的数据包被处理完成,马上从源队列中取出这个客户端等待处理的数据包填充到目标队列尾部。
所述的基于多线程环境网络数据包乱序控制方法中,所述步骤二源队列中已经放到目标队列的记录删除后,继续从源队列头部开始遍历源队列。
本发明的实施例中,客户端以user表示,数据包以packet表示,用数字1、2、3……区分不同的客户端和数据包。多个客户端不断向服务端发送数据包,一个线程将四个客户端发送的八个数据包按接收到的先后顺序保存到源队列中,另一个线程循环遍历源队列,将user1的packet1移到目标队列,并记下此user1正在被处理,当遍历到user1,packet2时,发现源队列有user1的packet1正在处理,而且在它之前没有user1的packet在等待处理,记下user1的packet2的位置N,接着遍历下一条,当遍历到user2,packet1时,发现不在目标队列中,将它移到目标队列中,依次类推,user3,packet1和user4,packet2都被移动目标队列中。删除源队列中已经移到目标队列的数据包,用NULL表示已删除,继续从源队列头部开始遍历此队列,重复前面的操作。若目标队列中的user1,packet1已经被处理掉了,正好源队列遍历到了user1,packet3位置,发现在它之前有user1,packet2在等待处理,优先处理user1,packet2,将user1,packet2放到目标队列尾部,然后跳回到user1,packet3位置开始重新遍历,最终目标队列中保存的是所有user的单个数据包,其他的包将留在源队列中等待处理。
尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。
Claims (5)
1.一种基于多线程环境网络数据包乱序控制方法,其特征在于,包括以下步骤:
步骤一、一个线程不断接收多个客户端向服务端发送的多个数据包并放到源队列中缓存;
步骤二、另一个线程循环的遍历源队列,每遍历一条记录就判断这条记录是否在目标队列中,若不在目标队列中,就将这条记录取出放到目标队列尾部,并记下此客户端的ID,接着遍历下一条记录,若在目标队列中,判断这条记录之前是否存在同一客户端的数据包在等待处理,若不存在,记下这个位置,接着遍历下一条记录,若存在,跳到等待处理的数据包的位置,取出这个数据包放到目标队列尾部,接着遍历下一条记录;
步骤三、其他线程不断从目标队列取走排在头部的客户端的数据包进行处理。
2.如权利要求1所述的基于多线程环境网络数据包乱序控制方法,其特征在于,一个客户端一次向服务端发送一个数据包,所述数据包按服务端接收的先后顺序保存到源队列中。
3.如权利要求2所述的基于多线程环境网络数据包乱序控制方法,其特征在于,所述目标队列中只能保存一个客户端的一个数据包。
4.如权利要求3所述的基于多线程环境网络数据包乱序控制方法,其特征在于,当发现目标队列中有客户端的数据包被处理完成,马上从源队列中取出这个客户端等待处理的数据包填充到目标队列尾部。
5.如权利要求4所述的基于多线程环境网络数据包乱序控制方法,其特征在于,所述步骤二源队列中已经放到目标队列的记录删除后,继续从源队列头部开始遍历源队列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310037379.9A CN103078811B (zh) | 2013-01-31 | 2013-01-31 | 一种基于多线程环境网络数据包乱序控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310037379.9A CN103078811B (zh) | 2013-01-31 | 2013-01-31 | 一种基于多线程环境网络数据包乱序控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103078811A CN103078811A (zh) | 2013-05-01 |
CN103078811B true CN103078811B (zh) | 2015-12-09 |
Family
ID=48155220
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310037379.9A Active CN103078811B (zh) | 2013-01-31 | 2013-01-31 | 一种基于多线程环境网络数据包乱序控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103078811B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103347075B (zh) * | 2013-07-02 | 2016-06-08 | 北京金和软件股份有限公司 | 一种数据多级缓存处理方法 |
CN113163346B (zh) * | 2021-04-21 | 2022-04-05 | 成都锐成芯微科技股份有限公司 | 广播数据包过滤方法和无线通信系统 |
CN113220335B (zh) * | 2021-05-26 | 2023-03-14 | 西安热工研究院有限公司 | 一种避免多线程并发写快照数据乱序的方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6977934B1 (en) * | 1998-10-30 | 2005-12-20 | British Telecommunications | Data transport |
CN101175033A (zh) * | 2007-11-27 | 2008-05-07 | 中兴通讯股份有限公司 | 报文保序方法及其装置 |
CN101330472A (zh) * | 2008-07-28 | 2008-12-24 | 中兴通讯股份有限公司 | 流媒体数据的缓存处理方法 |
CN101854302A (zh) * | 2010-05-27 | 2010-10-06 | 中兴通讯股份有限公司 | 报文保序方法及系统 |
CN102137027A (zh) * | 2011-05-03 | 2011-07-27 | 厦门市美亚柏科信息股份有限公司 | 数据的可靠传输方法和装置 |
CN102202410A (zh) * | 2010-03-23 | 2011-09-28 | 中兴通讯股份有限公司 | 无线通信网络的多用户多业务的调度方法及装置 |
CN102833336A (zh) * | 2012-08-31 | 2012-12-19 | 河海大学 | 分散分布式信息采集与并发处理系统中数据分包处理方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020124104A1 (en) * | 2001-03-01 | 2002-09-05 | Yigal Rappaport | Network element and a method for preventing a disorder of a sequence of data packets traversing the network |
GB0524021D0 (en) * | 2005-11-25 | 2006-01-04 | Ibm | A system for preserving message order |
CN100531142C (zh) * | 2006-12-30 | 2009-08-19 | 华为技术有限公司 | 保证报文顺序的方法和装置 |
CN102868636A (zh) * | 2012-09-11 | 2013-01-09 | 汉柏科技有限公司 | 多核网络设备报文按流保序方法及系统 |
-
2013
- 2013-01-31 CN CN201310037379.9A patent/CN103078811B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6977934B1 (en) * | 1998-10-30 | 2005-12-20 | British Telecommunications | Data transport |
CN101175033A (zh) * | 2007-11-27 | 2008-05-07 | 中兴通讯股份有限公司 | 报文保序方法及其装置 |
CN101330472A (zh) * | 2008-07-28 | 2008-12-24 | 中兴通讯股份有限公司 | 流媒体数据的缓存处理方法 |
CN102202410A (zh) * | 2010-03-23 | 2011-09-28 | 中兴通讯股份有限公司 | 无线通信网络的多用户多业务的调度方法及装置 |
CN101854302A (zh) * | 2010-05-27 | 2010-10-06 | 中兴通讯股份有限公司 | 报文保序方法及系统 |
CN102137027A (zh) * | 2011-05-03 | 2011-07-27 | 厦门市美亚柏科信息股份有限公司 | 数据的可靠传输方法和装置 |
CN102833336A (zh) * | 2012-08-31 | 2012-12-19 | 河海大学 | 分散分布式信息采集与并发处理系统中数据分包处理方法 |
Non-Patent Citations (1)
Title |
---|
高性能服务器底层网络通信模块的设计方法;王文武等;《计算机工程》;20090205;第35卷(第3期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN103078811A (zh) | 2013-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9658801B2 (en) | System having in-memory buffer service, temporary events file storage system and backup events file uploader service | |
CN104408088B (zh) | 并发请求的控制方法及装置 | |
US10127955B2 (en) | Memory activation method and apparatus, and memory controller | |
US8959228B2 (en) | Optimization of resource utilization in a collection of devices | |
US20150253992A1 (en) | Memory system and control method | |
US20160330299A1 (en) | Data distribution method and system and data receiving apparatus | |
CN103078811B (zh) | 一种基于多线程环境网络数据包乱序控制方法 | |
CN109710716A (zh) | 地图流畅渲染方法、终端设备及计算机可读存储介质 | |
CN104394096A (zh) | 一种基于多核处理器的报文处理方法及多核处理器 | |
US9582340B2 (en) | File lock | |
US9052796B2 (en) | Asynchronous handling of an input stream dedicated to multiple targets | |
CN105653610A (zh) | 一种快速显示大容量数据信息的方法 | |
US20150160968A1 (en) | Freezing a call stack | |
WO2024001411A1 (zh) | 多线程调度方法及装置 | |
CN103067419B (zh) | 一种分布式文件系统及在该系统中控制文件存储的方法 | |
CN105306858B (zh) | 一种视频数据存储方法和装置 | |
CN103607451A (zh) | 支持并发的客户端与服务器端的文档操作同步方法 | |
US20150212949A1 (en) | Storage control device and storage control method | |
CN104008067B (zh) | 一种存储数据的方法及装置 | |
CN105630593A (zh) | 用于处理中断的方法 | |
CN107229424B (zh) | 一种分布式存储系统数据写入方法及分布式存储系统 | |
CN105245372A (zh) | 一种基于缓存和异步机制的加载网络资源的优化方法 | |
CN105045938A (zh) | 一种元数据并发访问方法及系统 | |
KR101420292B1 (ko) | 데이터 구조 및 이를 이용한 데이터 처리 방법 | |
US20130103918A1 (en) | Adaptive Concentrating Data Transmission Heap Buffer and Method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |