利用线程处理数据的方法及装置与流程

文档序号:12005443阅读:225来源:国知局
利用线程处理数据的方法及装置与流程
本发明涉及通信技术领域,特别涉及一种利用线程处理数据的方法及装置。

背景技术:
异步传输模式(ATM,AsynchronousTransferMode)技术是在分组交换原理的基础上发展起来的一种面向连接的通信技术,其以ATM信元为单位在物理链路上传输数据。在ATM技术中,一条物理链路通常划分成多条虚通道(VP,VirtualPath),每条VP用虚通道标识符(VPI)标识,每条VP又可以承载多条虚通路(VC,VirtualChannel),每条VC用虚通路标识符(VCI)标识。不同VP上的VC构成用于传输ATM信元的VC连接(VCC),其由VC的VCI和承载该VC的VP的VPI一起来唯一标识。传输ATM信元的信头部分包括有用于识别传输其的VC连接的标识符,即VCI和VPI。ATM网络分为三层:ATM适配层(AAL,ATMAdaptationLayer)、ATM层和物理层。AAL层位于ATM的上层,负责将高层传来的数据拆分成ATM信元并传送给ATM层,以及将来自ATM层的ATM信元重组成数据并传送给高层。AAL层进一步分成两个子层,即会聚(CS,ConvergenceSublayer)子层和拆装(SAR,SegmentationAndReassembly)子层,其中,CS子层主要实现会聚功能,用于将数据变换成CS数据单元,而SAR子层主要用于以ATM信元为单位对CS数据进行分段或重组。AAL层具有不同的AAL协议,其中各个AAL协议用于支持在ATM网络上使用的不同的流量或服务类型。ATM适配层2(AAL2)是AAL协议的其中一种,其支持面向连接的比特率可变的业务。AAL2协议应用广泛,常见的业务为压缩的分组语音通信和压缩的视频传输。AAL2协议处理比较复杂。具体地,在AAL2协议中,当来自高层(应用层)的业务特定拆装子层(SSSAR,ServiceSpecificSegmentationandReassembly)报文(例如语音报文)要经由VC连接进行发送时,需要对该SSSAR报文执行AAL2分片处理,即:首先将该SSSAR报文拆分为公用部件子层(CPS,CommonPartSublayer)报文,然后再所拆分的CPS报文填写到ATM信元中并把其发送给ATM层,其中,一个CPS报文可以跨多个ATM信元填充,而单个ATM信元可以包含多个CPS报文。当来自ATM层的经由VC连接接收的ATM信元要传递给高层时,需要对ATM信元执行AAL2重组处理,即:首先从ATM信元中提取CPS报文,然后把所提取的CPS报文重组成SSSAR报文并发送给高层。由于AAL2协议的复杂性,导致其数据处理性能较低。

技术实现要素:
考虑到现有技术的上述缺陷,本发明的实施例提出一种利用线程处理数据的方法及装置,其使用多个线程来并行处理数据,从而提高数据的处理性能。本发明实施例提供一种用于在第一线程中处理数据的方法,包括步骤:当所述第一线程接收到需要执行指定处理的数据时,检测对所述数据执行所述指定处理所需的资源是否已经被另一线程占用;以及,当所述检测结果为肯定时,将所述数据发送给所述另一线程的处理等待队列。本发明实施例提供一种用于在第一线程中处理数据的装置,包括:检测模块,用于当所述第一线程接收到需要执行指定处理的数据时,检测对所述数据执行所述指定处理所需的临界资源是否已经被另一线程占用;以及,发送模块,用于当所述检测结果为肯定时,将所述数据发送给所述另一线程的处理等待队列。本发明实施例的方法和装置,采用多个线程来并行处理数据,并且需要使用相同的临界资源来处理的数据将仅由其中一个线程来处理,不同的线程处理需要不同临界资源的数据,因此线程之间不需要同步和保序,从而提高了数据的处理性能。附图说明本发明的目的、特点、特征和优点通过以下结合附图的详细描述将变得显而易见。其中:图1示出了根据本发明实施例一的利用线程来处理数据的方法的流程示意图;图2示出了利用本发明实施例一的方法来对数据进行AAL2分片处理的一个具体示例;图3示出了利用本发明实施例一的方法来对数据进行AAL2重组处理的一个具体示例;以及图4示出了按照本发明实施例的在第一线程中处理数据的装置。具体实施方式本发明的实施例提供一种利用线程来处理数据的方法和装置,其采用多个线程来并行处理数据,并且需要使用相同的临界资源来处理的数据将仅由其中一个线程来处理,不同的线程处理需要不同临界资源的数据,因此线程之间不需要同步和保序,从而加快了数据处理的速度。这里,如本领域技术人员所理解的,临界资源是指每次仅允许一个线程占用的资源,包括但不局限于打印机、磁带机、消息缓冲队列、变量、数组和/或缓冲区等。下面将结合附图详细描述本发明的各个实施例。图1示出了根据本发明实施例一的利用线程来处理数据的方法的流程示意图。在本实施例中,使用多个线程来并行处理多个需要执行指定处理的数据流,每个数据流的各个数据需要使用相同的临界资源来处理,但各个数据流需要使用不同的临界资源来处理,每一个线程具有用于保存待处理数据的处理等待队列。如图1所示,在步骤S110,当该多个线程中的任意一个线程P接收到需要执行指定处理的数据D时,线程P检测对数据D执行指定处理所需的临界资源R是否已经被另一线程所占用。在步骤S120,当步骤S110的检测结果为肯定,即临界资源R已经被另一线程所占用时,线程P将数据D发送给该另一线程的处理等待队列,以由该另一线程对数据D进行处理。然后,线程P继续接收下一个需要执行指定处理的数据D。在步骤S130,当步骤S110的检测结果为否定,即临界资源R还没有被另一线程所占用时,线程P占用临界资源R。在步骤S140,线程P利用所占用的临界资源R对数据D执行指定处理。在步骤S150,在利用临界资源R对数据D执行指定处理之后,线程P检查其处理等待队列中是否保存有其它线程发送的数据。在本实施例中,在线程P占用了临界资源R之后,当其它线程接收到需要使用临界资源R来处理的数据时,都会把该数据发送到线程P的处理等待队列,以由线程P进行处理。在步骤S160,当步骤S150的检查结果为肯定,即线程P的处理等待队列中保存有其它线程发送的数据时,线程P利用临界资源R对线程P的处理等待队列中所保存的数据执行指定处理。在步骤S170,当步骤S150的检查结果为否定,即线程P的处理等待队列中没有保存有其它线程发送的数据,或者已经处理完线程P的处理等待队列中所保存的数据时,线程P释放对临界资源R的占用。然后,线程P继续接收需要执行指定处理的其它数据。从上面的描述可知,按照本实施例一的方案,使用多个线程来并行处理数据,并且需要使用相同的临界资源来处理的数据将仅由其中一个线程来处理,不同的线程处理需要不同临界资源的数据,因此线程之间不需要同步和保序,从而加快了数据处理的速度。下面给出利用本实施例一所公开的方法来处理数据的具体示例。图2示出了利用本发明实施例一的方法来对数据进行AAL2分片处理的一个具体示例。在本示例中,利用多个线程来对多个需要经由不同的VCC进行发送的数据流并行地进行AAL2分片处理,其中,每一个数据流包括多个SSSAR报文。如图2所示,在步骤S210,当该多个线程中的任意一个线程C从高层接收到一个需要执行AAL2分片处理的SSSAR报文SB时,线程C试图对将要发送报文SB的VC连接XT施加互斥锁,以检测对报文SB执行AAL2分片处理所需的临界资源ZY是否已经被另一线程所占用。在这里,临界资源ZY可以包括但不局限于对SSSAR报文执行AAL2分片处理的上下文。在步骤S220,当线程C对VC连接XT施加互斥锁失败时,表明临界资源ZY已经被另一线程所占用,线程C将报文SB发送给该另一线程的处理等待队列,以由该另一线程对报文SB进行AAL2分片处理。然后,线程C继续从高层接收下一个需要执行AAL2分片处理的SSSAR报文。在步骤S230,当线程C对VC连接XT施加互斥锁成功时,确定临界资源ZY还没有被另一线程所占用,从而线程C就通过对VC连接XT施加了互斥锁而占用了临界资源ZY。在步骤S240,线程C利用所占用的临界资源ZY对报文SB执行AAL2分片处理,以把报文SB分割成ATM信元,其中,每个ATM信元包括有用于标识VC连接XT的VPI和VCI。在步骤S250,在利用临界资源ZY对报文SB执行AAL2分片处理之后,线程C检查其处理等待队列中是否保存有其它线程发送的SSSAR报文。在本示例中,在线程C占用了临界资源ZY之后,当其它线程接收到需要使用临界资源ZY来处理的SSSAR报文时,都会把该SSSAR报文发送到线程C的处理等待队列。在步骤S260,当步骤S250的检查结果为肯定,即线程C的处理等待队列中保存有其它线程发送的SSSAR报文时,线程C利用所占用的临界资源ZY对线程C的处理等待队列中所保存的SSSAR报文执行AAL2分片处理,以分割成ATM信元,其中,每个ATM信元包括用于标识VC连接XT的VPI和VCI。在步骤S270,当步骤S250的检查结果为否定,即线程C的处理等待队列中没有保存有其它线程发送的SSSAR报文,或者线程C处理完其处理等待队列中所保存的SSSAR报文时,线程C释放对临界资源ZY的占用。然后,线程C继续从高层接收其它需要执行AAL2分片处理的SSSAR报文。图3示出了利用本发明实施例一的方法来对数据进行AAL2重组的一个具体示例。在本示例中,利用多个线程来对多个从不同的VC连接接收的数据流并行地进行AAL2重组处理,其中,每一个数据流包括多个ATM信元。如图3所示,在步骤S310,当该多个线程中的任意一个线程K从ATM层接收到一个需要执行AAL2重组处理的ATM信元XY时,线程K根据ATM信元XY中所包括的VPI和VCI识别出接收ATM信元XY的VC连接ST,并试图对VC连接ST施加互斥锁,以检测对ATM信元XY执行AAL2重组处理所需的临界资源LJ是否已经被另一线程所占用。在这里,临界资源LJ可以包括但不局限于对ATM信元执行AAL2重组处理的上下文。在步骤S320,当线程K对VC连接ST施加互斥锁失败时,表明临界资源LJ已经被另一线程所占用,线程K将ATM信元XY发送给该另一线程的处理等待队列,以由该另一线程对ATM信元XY进行AAL2重组处理。然后,线程K继续从ATM层接收下一个需要执行AAL2重组处理的ATM信元。在步骤S330,当线程K对VC连接ST施加互斥锁成功时,表明临界资源LJ还没有被另一线程所占用,从而线程K就通过对VC连接ST施加了互斥锁而占用了临界资源LJ。在步骤S340,线程K利用所占用的临界资源LJ对ATM信元XY执行AAL2重组处理,以得到SSSAR报文。在步骤S350,在利用临界资源LJ对ATM信元XY执行AAL2重组处理之后,线程K检查其处理等待队列中是否保存有其它线程发送的ATM信元。在本示例中,在线程K占用了临界资源LJ之后,当其它线程接收到需要使用临界资源LJ来处理的ATM信元时,都会把该ATM信元发送到线程K的处理等待队列,以由线程K进行处理。在步骤S360,当步骤S350的检查结果为肯定,即线程K的处理等待队列中保存有其它线程发送的ATM信元时,线程K利用所占用的临界资源LJ对线程K的处理等待队列中所保存的ATM信元执行AAL2重组处理,以得到SSSAR报文。在步骤S370,当步骤S350的检查结果为否定,即线程K的处理等待队列中没有保存有其它线程发送的ATM信元,或者线程K处理完其处理等待队列中所保存的ATM信元时,线程K释放对临界资源LJ的占用。然后,线程K继续从ATM层接收其它需要执行AAL2重组处理的ATM信元。本领域技术人员应当理解,虽然在上面具体示例的描述中,通过对VC连接施加互斥锁来检测相应的临界资源是否已经被另一线程占用,然而,本发明并不局限于此。在本发明的其它实施例中,例如,也可以直接对临界资源施加互斥锁来检测相应的临界资源是否已经被另一线程占用。本领域技术人员应当理解,各个线程的处理等待队列可以包括多个具有不同优先级的处理等待队列,当一个线程将所接收的数据发送到另一线程的处理等待队列以由该另一线程进行处理时,首先识别该接收的数据的优先级,然后将该接收的数据发送到该另一线程中的与该接收的数据的优先级相应的处理等待队列中。当一个线程对其各个处理等待队列所保存的数据进行处理时,按照其各个处理等待队列的优先级从高到低的顺序,对其各个处理等待队列所保存的数据进行处理。本领域技术人员应当理解,本发明实施例所公开的方法不但可以用来对数据执行AAL2分片处理和AAL2重组处理,而且也对数据执行其它类型的处理。现在参考图4,其示出了按照本发明实施例的在第一线程中处理数据的装置,其中,该第一线程是多个线程中的任意线程。如图4所示,装置400包括检测模块410和发送模块420,其中,检测模块410用于当第一线程接收到需要执行指定处理的数据时,检测对第一线程所接收的数据执行指定处理所需的临界资源是否已经被另一线程占用,以及,发送模块420用于当检测模块410的检测结果为肯定时,将第一线程所接收的数据发送给该另一线程的处理等待队列。装置400还可以包括占用模块430和执行模块440,其中,占用模块430用于当检测模块410的检测结果为否定时,占用该临界资源用于第一线程,以及,执行模块440用于利用该占用的用于第一线程的临界资源对第一线程所接收的数据执行指定处理。发送模块420还可以进一步包括识别模块和传递模块,其中,识别模块用于当检测模块410的检测结果为肯定时,识别第一线程所接收的数据的优先级,以及,传递模块用于将第一线程所接收的数据发送给该另一线程的与第一线程所接收的数据的优先级相对应的处理等待队列。装置400还可以包括检查模块450和释放模块460,其中检查模块450用于在对第一线程所接收的数据执行指定处理后,检查第一线程的处理等待队列中是否保存有其它线程发送的数据,释放模块460用于当检查模块450的检查结果为否定,或者当执行模块440处理完第一线程的处理等待队列所保存的数据时,释放所占用的用于第一线程的临界资源。其中,执行模块440还用于当检查模块450的检查结果为肯定时,按照第一线程的处理等待队列的优先级从高到低的顺序,利用所占用的用于第一线程的临界资源对第一线程的处理等待队列所保存的数据执行指定处理。检测模块410还可以进一步包括施加模块和确定模块,其中,施加模块用于对处理第一线程所接收的数据所需的临界资源施加第一线程的互斥锁,以及,确定模块用于当施加互斥锁失败时,确定该临界资源已经被另一线程占用。其中,例如,第一线程所接收的数据可以是需要拆分为ATM信元的SSSAR报文,指定处理可以是AAL2分片处理,以及,处理第一线程所接收的数据所需的临界资源可以是与发送SSSAR报文的ATM信元的VC连接有关的临界资源。或者,第一线程所接收的数据可以是需要重组为SSSAR报文的ATM信元,指定处理可以是AAL2重组处理,以及,处理第一线程所接收的数据所需的临界资源可以是与接收SSSAR报文的ATM信元的VC连接有关的临界资源。本领域技术人员应当理解,装置400所包括的各个模块,可以利用软件、硬件或者软硬件结合的方式来实现。本发明实施例还提供机器可读存储介质,其存储有机器可执行指令,其中,当该机器可执行指令被执行时使得机器实施用于在第一线程中处理数据的方法,该方法包括以下步骤:当第一线程接收到需要执行指定处理的数据时,检测对该接收到的数据执行指定处理所需的临界资源是否已经被另一线程占用;当检测结果为肯定时,将该接收到的数据发送给该另一线程的处理等待队列。其中,该方法还可以包括以下步骤:当检测结果为否定时,占用该所需的临界资源用于第一线程;利用所占用的用于第一线程的临界资源对该接收到的数据执行指定处理。其中,该方法还可以包括以下步骤:在对该接收到的数据执行指定处理后,检查第一线程的处理等待队列中是否保存有其它线程发送的数据;当检查结果为肯定时,按照第一线程的处理等待队列的优先级从高到低的顺序,利用所占用的用于第一线程的临界资源对第一线程的处理等待队列所保存的数据执行指定处理;当检查结果为否定时,释放所占用的用于第一线程的临界资源。其中,上面所描述的发送步骤还可以进一步包括以下步骤:当检测结果为肯定时,识别该接收到的数据的优先级;将该接收到的数据发送给该另一线程的与该接收到的数据的优先级相对应的处理等待队列。其中,上面所描述的检测步骤还可以进一步包括以下步骤:对该所需的临界资源施加第一线程的互斥锁;当施加互斥锁失败时,确定该所需的临界资源已经被该另一线程占用。其中,例如,该接收到的数据可以是需要拆分为ATM信元的SSSAR报文,指定处理可以是AAL2分片处理,该所需的临界资源可以是与发送SSSAR报文的ATM信元的虚通路连接有关的临界资源,或者,该接收到的数据可以是需要重组为SSSAR报文的ATM信元,指定处理可以是AAL2重组处理,该所需的临界资源可以是与接收SSSAR报文的ATM信元的虚通路连接有关的临界资源。本领域技术人员应当理解,本发明的各个实施例所公开的方法和装置,可以在不偏离发明实质的情况下做出各种变形和改变,这些变形和改变都应当落入在本发明的保护范围之内。因此,本发明的保护范围由所附的权利要求书来定义。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1