软总线程序并发资源分配方法

文档序号:9432375阅读:113来源:国知局
软总线程序并发资源分配方法
【技术领域】
[0001]本发明属于一种数据处理方法,具体涉及一种软总线程序并发资源分配方法。
【背景技术】
[0002]软总线程序主要应用在网络通信系统中,实现模块间的数据通信功能,是模块间实现跨进程通信的通道。数据传输的效率是衡量该通道的一个重要指标,对软总线而言,它是一个服务模块,同一时刻进行通信的客户端模块有若干个,保证每个模块都能够及时准确的收到信息是软总线首要考虑的问题。
[0003]针对这个问题,目前有两种解决方案,一是依赖于硬件扩展,譬如增加计算机内存,提升计算机主频等,借以提高硬件处理能力;二是用软件方法实现多线程、多进程工作,提高数据传输的并发性效率。
[0004]上述两种方式虽然能在一定程度上解决数据转发速度问题,但是过于依赖外部条件(譬如硬件配置)就会降低软件产品的推广应用,使软件产品成为特殊应用;同样,如果一味的增加线程或进程数量来解决这个问题,除了硬件依赖性太强之外,系统处理能力反而下降,从而影响了数据传输效率的提升。

【发明内容】

[0005]为解决上述技术中的不足,本发明的目的在于:提供一种软总线程序并发资源分配方法,既能提高数据转发效率,又能消除对硬件条件和线程数量的过度依赖。
[0006]为解决其技术问题,本发明所采取的技术方案为:
[0007]所述软总线程序并发资源分配方法,包括以下步骤:
[0008]第一步,建立应用级线程池,预先启动若干个工作者线程Wn (η = 1,2,…,N,N取大于2的整数)和一个管理者线程M ;
[0009]第二步,为每一个工作者线程^定义一个发送缓冲区,由管理者线程M进行该发送缓冲区内发送数据的调配与写入,由工作者线程^进行该发送缓冲区内发送数据的读取和转发。
[0010]其中,优选方案为:
[0011]所述发送缓冲区具体定义方式如下:
[0012]定义CBuf类,这个类中包含一个CRec类型的成员变量m_CRec
[5000]、一个int类型的读指针m_nRead和一个int类型的写指针m_nWrite,m_CRec
[5000]成员变量是发送缓冲区,由管理者线程M和工作者线程评?共同使用,读指针m_nRead记录发送缓冲区中已经发送到第几条记录,由工作者线程Wn使用;写指针m_nWrite记录发送缓冲区中已经写到第几条记录,由管理者线程M使用。
[0013]所述第二步中发送缓冲区内发送数据的调配与写入实现方式如下:
[0014]管理者线程M从代发数据堆中获取发送的数据匕后,计算所有W n的负荷情况,定义工作者线程1?的负荷为W abs (m_nffrite-m_nRead),其中abs表示绝对值,找出任务负荷最小者wn_后将D s写入W ?_的m_CRec发送缓冲区中,同时将该发送缓冲区的写指针m_nWrite加1,M线程无限循环。
[0015]所述第二步中工作者线程Wn读取和转发缓冲发送区内数据的方式如下:
[0016]工作者线程樣自己的发送缓冲区m_CRec中获取一条未发送记录D s后进行数据转发,成功后将m_CRec发送缓冲区读指针m_nRead加I ;然后判断自己的发送负荷量,如果负荷量大于O则继续循环发送。
[0017]所述读指针m_nRead如果与写指针m_nWrite相等,则读指针m_nRead加I,覆盖一条未发送记录。
[0018]与现有技术相比,本发明具有以下有益效果:
[0019]本发明既能提高数据转发效率,又能消除对硬件条件和线程数量的过度依赖。管理者线程M发送任务的调度处理方法简单易用,经过任务的合理分配,发送线程数量控制在5到8个左右就可以达到要求,降低了服务器硬件要求;同时,由于线程数量的合理运用,操作系统调度更加合理,整体效率得到提升,初步估算约为30% -50% ;该方法通过负荷量计算,合理分配发送任务,提高了数据转发效率。通过试验验证,利用该方法,在20个客户端情况下,实现任意客户端之间的数据传输,按照每秒50条记录,一条记录长度为10240字节传输,接收方时延仅为200毫秒,比多线程抢占式发送效率提升了 300% -500%。
【附图说明】
[0020]图1是实施例1原理图。
【具体实施方式】
[0021]下面结合附图对本发明实施例做进一步描述:
[0022]实施例1:
[0023]如图1所示,本发明所述软总线程序并发资源分配方法,包括以下步骤:
[0024]第一步,建立应用级线程池,预先启动若干个工作者线程Wn (η = 1,2,…,N,N取大于2的整数)和一个管理者线程M ;
[0025]第二步,为每一个工作者线程^定义一个发送缓冲区,由管理者线程M进行该发送缓冲区内发送数据的调配与写入,由工作者线程^进行该发送缓冲区内发送数据的读取和转发。
[0026]其中,所述发送缓冲区具体定义方式如下:
[0027]定义CBuf类,这个类中包含一个CRec类型的成员变量m_CRec
[5000]、一个int类型的读指针m_nRead和一个int类型的写指针m_nWrite,m_CRec
[5000]成员变量是发送缓冲区,由管理者线程M和工作者线程评?共同使用,读指针m_nRead记录发送缓冲区中已经发送到第几条记录,由工作者线程Wn使用;写指针m_nWrite记录发送缓冲区中已经写到第几条记录,由管理者线程M使用。
[0028]所述第二步中发送缓冲区内发送数据的调配与写入实现方式如下:
[0029]管理者线程M从代发数据堆中获取发送的数据匕后,计算所有W n的负荷情况,定义工作者线程1?的负荷为W abs (m_nffrite-m_nRead),其中abs表示绝对值,找出任务负荷最小者Wnnun后将D s写入W ?_的m_CRec发送缓冲区中,同时将该发送缓冲区的写指针m_nWrite加1,M线程无限循环。
[0030]所述第二步中工作者线程Wn读取和转发缓冲发送区内数据的方式如下:
[0031 ] 工作者线程樣自己的发送缓冲区m_CRec中获取一条未发送记录D s后进行数据转发,成功后将m_CRec发送缓冲区读指针m_nRead加I ;然后判断自己的发送负荷量,如果负荷量大于O则继续循环发送。
[0032]所述读指针m_nRead如果与写指针m_nWrite相等,则读指针m_nRead加I,覆盖一条未发送记录。
[0033]本发明既能提高数据转发效率,又能消除对硬件条件和线程数量的过度依赖。管理者线程M发送任务的调度处理方法简单易用,经过任务的合理分配,发送线程数量控制在5到8个左右就可以达到要求,降低了服务器硬件要求;同时,由于线程数量的合理运用,操作系统调度更加合理,整体效率得到提升,初步估算约为30% -50% ;该方法通过负荷量计算,合理分配发送任务,提高了数据转发效率。
[0034]以20个客户端为例,每个客户端内搭建一软总线模块,任意两个客户端之间进行信息交互时,所述软总线模块利用上述软总线程序并发资源分配方法进行资源的并发和分配,按照每秒50条记录,一条记录长度为10240字节传输,接收方时延仅为200毫秒,比多线程抢占式发送效率提升了 300% -500%。
【主权项】
1.一种软总线程序并发资源分配方法,其特征在于,包括以下步骤: 第一步,建立应用级线程池,预先启动若干个工作者线程Wn (η = I, 2,…,N,N取大于2的整数)和一个管理者线程M ; 第二步,为每一个工作者线程胃?定义一个发送缓冲区,由管理者线程M进行该发送缓冲区内发送数据的调配与写入,由工作者线程Wn进行该发送缓冲区内发送数据的读取和转发。2.根据权利要求1所述的软总线程序并发资源分配方法,其特征在于,所述发送缓冲区具体定义方式如下: 定义CBuf类,这个类中包含一个CRec类型的成员变量m_CRec [5000]、一个int类型的读指针m_nRead和一个int类型的写指针m_nWrite,m_CRec [5000]成员变量是发送缓冲区,由管理者线程M和工作者线程评?共同使用,读指针m_nRead记录发送缓冲区中已经发送到第几条记录,由工作者线程Wn使用;写指针m_nWrite记录发送缓冲区中已经写到第几条记录,由管理者线程M使用。3.根据权利要求2所述的软总线程序并发资源分配方法,其特征在于,所述第二步中工作者线程Wn读取和转发缓冲发送区内数据的方式如下: 工作者线程Wn从自己的发送缓冲区m_CRec中获取一条未发送记录D s后进行数据转发,成功后将m_CRec发送缓冲区读指针m_nRead加I ;然后判断自己的发送负荷量,如果负荷量大于O则继续循环发送。4.根据权利要求2所述的软总线程序并发资源分配方法,其特征在于,所述第二步中发送缓冲区内发送数据的调配与写入实现方式如下: 管理者线程M从代发数据堆中获取发送的数据匕后,计算所有W n的负荷情况,定义工作者线程1的负荷为Wnftif= abs (m_nffrite-m_nRead),其中abs表示绝对值,找出任务负荷最小者Wnnun后将D s写入Wnnun的m_CRec发送缓冲区中,同时将该发送缓冲区的写指针m_nWrite加1,M线程无限循环。5.根据权利要求4所述的软总线程序并发资源分配方法,其特征在于,所述读指针m_nRead如果与写指针m_nWrite相等,则读指针m_nRead加1,覆盖一条未发送记录。6.根据权利要求1所述的软总线程序并发资源分配方法,其特征在于,所述工作者线程定义5-8个,即N取5-8。
【专利摘要】本发明属于一种数据处理方法,具体涉及一种软总线程序并发资源分配方法,包括以下步骤:第一步,建立应用级线程池,预先启动若干个工作者线程Wn(n=1,2,…,N,N取大于2的整数)和一个管理者线程M;第二步,为每一个工作者线程Wn定义一个发送缓冲区,由管理者线程M进行该发送缓冲区内发送数据的调配与写入,由工作者线程Wn进行该发送缓冲区内发送数据的读取和转发。本发明既能提高数据转发效率,又能消除对硬件条件和线程数量的过度依赖,管理者线程M发送任务的调度处理方法简单易用,发送线程数量控制在5到8个左右就可以达到要求,通过负荷量计算,合理分配发送任务,提高了数据转发效率。
【IPC分类】G06F9/48
【公开号】CN105183553
【申请号】CN201510731501
【发明人】刘国永, 徐传伦, 张宪强, 张万征
【申请人】山东智洋电气股份有限公司
【公开日】2015年12月23日
【申请日】2015年10月31日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1