专利名称::一种电子产品码多线程处理方法
技术领域:
:本发明涉及一种电子产品码的处理方法,尤其设计一种电子产品码的多线程处理方法。技术背景RFID(RadioFrequencyIdentification)技术是新一代的非接触识别技术,以其高效、抗干扰能力强、识别速度快而闻名。RFID技术的应用将会给物流、医药、食品、危险品等相关行业带来生产效率的根本性提高并能促进高危行业的生产安全性。RFID技术的大规模应用依赖于RFID中间件的发展。RFID中间件向下层硬件提供普适的接口,有效屏蔽下层硬件的差异性;它同时也提供对RFIDTAG数据处理(过滤、分组等)的功能。RFID中间件在整个RFID应用中担负着数据处理的重要角色,它的性能成为整个RFID中间件使能应用的性能瓶颈,所以RFID中间件中电子产品码的处理机构——电子产品码处理单元的性能成为研究的重点。国际组织EPCGlobal对RFID技术及RFID中间件等相关领域部件的功能给予了定义和规范化说明,与电子产品码数据处理相关的规范是ALE(ApplicationLevelEvent)规范。它规定了电子产品码数据处理的流程和处理单元的功能,但没有给出处理单元设计实现等的相关内容。于此同时,国内关于RFID技术及RFID中间件技术的规范也正在积极制定中。目前已问世的RFID中间件产品中,存在使用线程组处理电子产品码的方法,但其线程组中工作线程的规模不可控,并耳使用单缓冲区或者链式、多级缓冲区缓冲数据。这种方法能够达至u不丢失数据、多线程处理数据的目的,但当线程对缓冲区进行同步时,系统额外消耗仍然较大,没有充分利用计算机系统资源来真正处理电子产品码的数据。特别是在某些极端的大数据量的应用场景下,系统计算资源显得十分宝贵,这种不充分利用系统资源的缺陷,降低了RFID中间件在处理电子产品码的性能。
发明内容本发明的目的在于克服上述工作线程不易控制及电子产品码处理单元不能充分利用计算资源的缺点,提供了一种能够使得工作线程更加容易控制以及更加高效利用系统计算资源的,基于多线程双缓冲区的,能够提高RFID中间件对电子产品码数据的处理能力的电子产品码多线程处理方法。为达到上述目的,本发明采用的技术方案是1)处理数据的线程组使用两个线程安全的缓冲区,其中一个作为工作线程处理数据的场所,另一个接收新的待处理的电子产品码数据;2)线程组维护两个缓冲区的引用,其中一个指向数据处理缓冲区,另一个指向待处理数据缓冲区,工作线程持有处理数据缓冲引用,待处理数据提供者持有待处理数据缓冲区引用;3)计算数据处理缓冲区中的数据量与工作线程之比E,如E大于V,则转向8),否则转向4),其中V为用户定义的阈值;4)工作线程处理数据处理缓冲区中的电子产品码数据,数据提供者将电子产品码数据放入待处理数据缓冲区,当数据处理缓冲区中的电子产品码数据被工作线程处理完后,转向5;5)系统交换两个引用的值使工作线程持有引用的值指向原先的待处理数据缓冲区;数据提供者持有引用的值指向原先的数据处理缓冲区,如工作线程引用的当前值指向的缓冲区含有数据,则转向3),否则转向6);6)系统周期性的检查待处理数据缓冲区是否为空,周期长度为用户配置的周期长度,若有数据进入则转向5),若轮询次数达到N时,N用户配置的值,且空闲工作线程数目大于MIN时,MIN用户配置的值,则转向7);若轮询次数达到N且空闲工作线程数目小于等于MIN时,则转向6)。7)按照用户配置的幅度D减少工作线程数量,轮询次数重置为0,转向6);8)增加一次忙碌计数M,M的初始值为0,如M大于等于用户配置的阀值B且工作线程数目小于用户配置的MAX时,转向9);如M大于等于阀值B且工作线程数数目大于等于MAX时,转向4);9)按照用户配置的幅度R增加工作线程数量,转向4)10)本系统的运行行为是无限循环的伺服行为,当系统处于运行状态时,用户借由系统外界通过系统提供的接口调用,向系统发送停机指令,系统即检査工作状态、完成必要处理工作、持久化缓存数据、回收缓冲、释放系统资源,从而完成系统的推出,循环伺服状态即告结束。本发明使用自动控制工作线程数量的双缓冲线程组对电子产品码数据进行处理系统负载重时,线程组自动增加工作线程数量,以适应大吞吐量数据的处理要求;当系统负载轻时,线程组自动减少工作线程数量,以节约系统额外消耗。所有处理数据的工作线程使用一个缓冲区处理数据的同时,使用另一个缓冲区接收新数据,分离对同一缓冲区的读写操作,减轻了线程同步的消耗。同时,存在两个分别指向处理数据缓冲区和待处理数据缓冲区的引用,各工作线程持有前者,新数据提供者持有后者,在数据处理缓冲区为空时,交换缓冲区引用,使得系统继续处理和接收数据。通过可伸縮的双缓冲线程组,避免了工作线程对同一缓冲区的读写同步,降低系统额外消耗,提升系统对电子产品码的处理能力。图1是本发明的模型图;图2是本发明的流程状态转换图。具体实施方式下面结合附图对本发明作进一步说明。本发明的多线程处理方法如下1)处理数据的线程组使用两个线程安全的缓冲区,其中一个作为工作线程处理数据的场所,另一个接收新的待处理的电子产品码数据;2)线程组维护两个缓冲区的引用,其中一个指向数据处理缓冲区,另一个指向待处理数据缓冲区,工作线程持有处理数据缓冲引用,待处理数据提供者持有待处理数据缓冲区弓l用;3)计算数据处理缓冲区中的数据量与工作线程之比E,如E大于V,则转向8),否则转向4),其中V为用户定义的阈值;4)工作线程处理数据处理缓冲区中的电子产品码数据,数据提供者将电子产品码数据放入待处理数据缓冲区,当数据处理缓冲区中的电子产品码数据被工作线程处理完后,转向5;5)系统交换两个引用的值使工作线程持有引用的值指向原先的待处理数据缓冲区;数据提供者持有引用的值指向原先的数据处理缓冲区,如工作线程引用的当前值指向的缓冲区含有数据,则转向3),否则转向6);6)系统周期性的检查待处理数据缓冲区是否为空,周期长度为用户配置的周期长度,若有数据进入则转向5),若轮询次数达到N时,N用户配置的值,且空闲工作线程数目大于MIN时,MIN用户配置的值,则转向7);若轮询次数达到N且空闲工作线程数目小于等于MIN时,则转向6)。7)按照用户配置的幅度D减少工作线程数量,轮询次数重置为0,转向6);8)增加一次忙碌计数M,M的初始值为0,如M大于等于用户配置的阀值B且工作线程数目小于用户配置的MAX时,转向9);如M大于等于阀值B且工作线程数数目大于等于MAX时,转向4);9)按照用户配置的幅度R增加工作线程数量,转向4)10)本系统的运行行为是无限循环的伺服行为,当系统处于运行状态时,用户借由系统外界通过系统提供的接口调用,向系统发送停机指令,系统即检査工作状态、完成必要处理工作、持久化缓存数据、回收缓冲、释放系统资源,从而完成系统的推出,循环伺服状态即告结束。如图1,本发明所要处理的数据为电子产品码,它被装入当前的数据入口缓冲区中,各个工作线程从当前的数据处理缓冲区中提取并处理数据。系统中存在两个缓冲区的引用,其引用值是两个缓冲区的地址,它们控制数据存取的场所。并且当前数据处理缓冲区中无数据可以处理时,即交换缓冲区引用的值,使得可能存在待处理数据的另一个缓冲区变为数据处理缓冲区。图2描述了数据处理流程和状态变化情况。1)假设系统处于状态l,即数据处理状态(工作线程从当前数据处理缓冲区中获取并处理数据,于此同时新的待处理的电子产品码数据进入数据入口缓冲区)。2)如果当前处理的数据被处理完毕,则通过变迁1转向状态2,表示现在交换两个引用的值。3)引用值交换完成之后,如果当前数据处理缓冲区中存在数据,则计算目前缓冲区中数据长度与线程数目之比E,若E《V(用户定义的阈值),贝lj转向状态l,继续处理数据。4)若E〉V,则将系统繁忙计数增加l,直到系统繁忙次数为M(用户定制)时,检查目前线程组中线程数目,如果线程数目己达到用户预定义MAX值,则返回状态l,继续处理数据;如果线程数目没达到MAX,则进入状态9,增加工作线程数量,繁忙次数清零,并进入状态1继续处理数据。5)引用值交换完成之后,如果当前数据处理缓冲区中不存在数据,则系统开始轮询数据入口缓冲区,若有新数据加入则满足变迁3的要求,进入状态2;若没有新数据加入,则将系统闲置计数增l。在变迁4处,如果系统闲置计数<N(用户预定值的阈值)且满足状态5(系统空闲线程数>MIN),则减少空闲的线程数量,闲置计数清零,并回到状态3;如果不满足状态5,则直接回到状态3。6)图2中的其它流程见下表2=(S,T)<table>tableseeoriginaldocumentpage9</column></row><table>权利要求1、一种电子产品标签多线程处理方法,其特征在于1)处理数据的线程组使用两个线程安全的缓冲区,其中一个作为工作线程处理数据的场所,另一个接收新的待处理的电子产品码数据;2)线程组维护两个缓冲区的引用,其中一个指向数据处理缓冲区,另一个指向待处理数据缓冲区,工作线程持有处理数据缓冲引用,待处理数据提供者持有待处理数据缓冲区引用;3)计算数据处理缓冲区中的数据量与工作线程之比E,如E大于V,则转向8),否则转向4),其中V为用户定义的阈值;4)工作线程处理数据处理缓冲区中的电子产品码数据,数据提供者将电子产品码数据放入待处理数据缓冲区,当数据处理缓冲区中的电子产品码数据被工作线程处理完后,转向5;5)系统交换两个引用的值使工作线程持有引用的值指向原先的待处理数据缓冲区;数据提供者持有引用的值指向原先的数据处理缓冲区,如工作线程引用的当前值指向的缓冲区含有数据,则转向3),否则转向6);6)系统周期性的检查待处理数据缓冲区是否为空,周期长度为用户配置的周期长度,若有数据进入则转向5),若轮询次数达到N时,N用户配置的值,且空闲工作线程数目大于MIN时,MIN用户配置的值,则转向7);若轮询次数达到N且空闲工作线程数目小于等于MIN时,则转向6)。7)按照用户配置的幅度D减少工作线程数量,轮询次数重置为0,转向6);8)增加一次忙碌计数M,M的初始值为0,如M大于等于用户配置的阀值B且工作线程数目小于用户配置的MAX时,转向9);如M大于等于阀值B且工作线程数数目大于等于MAX时,转向4);9)按照用户配置的幅度R增加工作线程数量,转向4)10)本系统的运行行为是无限循环的伺服行为,当系统处于运行状态时,用户借由系统外界通过系统提供的接口调用,向系统发送停机指令,系统即检查工作状态、完成必要处理工作、持久化缓存数据、回收缓冲、释放系统资源,从而完成系统的推出,循环伺服状态即告结束。全文摘要一种电子产品标签多线程处理方法,使用自动控制工作线程数量的双缓冲线程组对电子产品码数据进行处理系统负载重时,线程组自动增加工作线程数量,当系统负载轻时,线程组自动减少工作线程数量,所有处理数据的工作线程使用一个缓冲区处理数据的同时,使用另一个缓冲区接收新数据,分离对同一缓冲区的读写操作,减轻了线程同步的消耗。同时,存在两个分别指向处理数据缓冲区和待处理数据缓冲区的引用,各工作线程持有前者,新数据提供者持有后者,在数据处理缓冲区为空时,交换缓冲区引用,使得系统继续处理和接收数据。通过可伸缩的双缓冲线程组,避免了工作线程对同一缓冲区的读写同步,降低系统额外消耗,提升系统对电子产品码的处理能力。文档编号G06K17/00GK101403980SQ20081023224公开日2009年4月8日申请日期2008年11月12日优先权日2008年11月12日发明者迪侯,曹晓琦,磊杨,范海军,勇齐申请人:西安交通大学