队列消息的处理方法、控制消息进入队列的方法及装置制造方法
【专利摘要】本发明实施例公开了一种消息队列的处理方法、控制消息进入队列的方法及装置,所述处理方法包括:接收需要处理的消息;按照消息的依赖关系进行分类,并将分类后的消息放入对应的处理队列组中,所述处理队列组包括:并行处理队列组和串行处理队列;获取处理队列组中的头节点链表,头节点链表为对应的处理队列组中每个不同时刻对应的消息链表的节点连接在一起的链表;所述头节点链表包括:并行处理队列组的并行头节点链表和串行处理队列组的串行头节点链表;在达到对应的所述头节点链表中的节点的处理时刻时,对所述头节点链表中的节点的消息链表进行处理。本发明实施例通过双队列链表的方式对消息进行并行处理,提高了消息的处理时效。
【专利说明】队列消息的处理方法、控制消息进入队列的方法及装置
【技术领域】
[0001]本发明涉及信息处理【技术领域】,特别涉及一种队列消息的处理方法、控制消息进入队列的方法及装置。
【背景技术】
[0002]消息处理机制(Handler)是Android系统的核心设计机制之一,整个系统都是靠消息来驱动的。比如,消息队列是消息处理类(Looper)中的消息存储队列。Looper中的消息侦听方法中,先把消息取出,然后调用Handler的消息分发处理方法对消息进行处理。Handler类的消息入队方法中,往消息队列中放入消息。loop方法每次都是从消息存储队列的头中取消息。对于需要在同一时刻处理的消息,Handler类的消息入队方法中,每次把该消息放到距离队列头最近的位置。消息在队列中是按照离处理时刻越近的消息越靠近消息队列的头的方式进行排列,如果处理时刻的域值填充的是0,表示该消息需要立即处理。图1为现有技术中多个消息进入队列的顺序的示意图,假设有A、B、C、D、E、F五个消息需要立即处理,每隔100毫秒来一个消息,处理一个消息需要1000毫秒。消息进入队列和取出被处理的顺序分别为:消息进入队列的顺序为:A、B、C、D、E、F ;以及消息取出被处理的顺序为:A、F、E、D、C、B。可见,先到的消息B在后到的消息C\D\E\F之后才处理。
[0003]在对现有技术的研究和实践过程中,本发明的发明人发现,现有的实现方式中,对于后到的消息先处理,而先到的消息后处理,容易导致应用程序无响应(ANR,ApplicationNot Responding),也降低了对消息处理的时效性。
【发明内容】
[0004]本发明实施例中提供了一种消息队列的处理方法、控制消息进入队列的方法及装置,以解决现有技术中对先到消息进行后处理,导致处理消息的时效性降低的技术问题。
[0005]为了解决上述技术问题,本发明实施例公开了如下技术方案:
[0006]第一方面提供了一种消息队列的处理方法,所述方法应用于移动终端的操作系统,所述方法包括:
[0007]接收需要处理的消息;
[0008]按照所述消息的依赖关系进行分类,并将分类后的消息放入对应的处理队列组中,所述处理队列组包括:并行处理队列组和串行处理队列;
[0009]获取所述处理队列组中的头节点链表,所述头节点链表为对应的处理队列组中每个不同时刻对应的消息链表的节点连接在一起的链表;其中,所述头节点链表包括:并行处理队列组中的并行头节点链表和串行处理队列组中的串行头节点链表;
[0010]在达到对应的所述头节点链表中的节点的处理时刻时,对所述头节点链表中的节点的消息链表进行处理。
[0011]在第一方面的第一种可能的实现方式中,还包括:
[0012]在达到下一个节点的处理时刻时,将所述下一个节点的消息链表链接到当前链表的尾部,其中,所述下一个节点为所述并行头节点链表中或所述串行头节点链表中当前正在处理的节点的下一个节点。
[0013]结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述方法还包括:
[0014]在将所述下一个节点的消息链表链接到当前链表的尾部后,删除所述头节点链表中所述下一个节点的消息链表对应的节点,其中,所述下一个节点的消息链表为所述并行头节点链表或串行头节点链表中的下一个节点的消息链表。
[0015]结合第一方面或第一方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,所述获取到的所述头节点链表中每个头节点的头指针域和尾指针域,分别指向对应的所述消息链表的头部和尾部,其中,所述头节点链表中的每个头节点包括:并行头节点链表中的每个头节点和串行头节点链表中的每个头节点。
[0016]结合第一方面或第一方面的第一种或第二种或第三种可能的实现方式,在第四种可能的实现方式中,所述按照所述消息的依赖关系进行分类,并将分类后的消息放入对应的处理队列组中,包括:
[0017]判断所述消息中是否包括指示信息,如果包括指示信息,则按照所述指示信息对所述消息进行分类,并将分类后的所述消息放入对应的处理队列组中对应时刻的相应消息链表中;如果没有包括指示信息,则将所述消息放入对应的串行处理队列组中对应时刻的相应消息链表中。
[0018]第二方面提供了一种控制消息进入队列的方法,所述方法包括:
[0019]接收消息;
[0020]在所述消息中添加指示信息,以便于接收到所述消息的处理器按照添加的指示信息对所述消息进行分类,并对分类后的所述消息进行并行处理。
[0021]在第二方面的第一种可能的实现方式中,所述指示信息包括:并行标识或串行标识。
[0022]第三方面提供了一种消息队列的处理装置,其特征在于,应用于移动终端的操作系统,所述装置包括:
[0023]接收单元,用于接收需要处理的消息;
[0024]分类单元,用于按照所述消息的依赖关系,并将分类后的消息放入对应的处理队列组中,所述处理队列组包括:并行处理队列组和串行处理队列;
[0025]获取单元,用于获取所述处理队列组中的头节点链表,所述头节点链表为对应的处理队列组中每个不同时刻对应的消息链表的节点连接在一起的链表;其中,所述头节点链表包括:并行处理队列组中的并行头节点链表和串行处理队列组中的串行头节点链表;
[0026]处理单元,用于在达到对应的所述头节点链表中的节点的处理时刻时,对所述头节点链表中的节点的消息链表进行处理。
[0027]在第三方面的第一种可能的实现方式中,还包括:
[0028]第一判断单元,用于判断是否达到下一个节点的处理时刻,其中,所述下一个节点为所述并行头节点链表中或所述串行头节点链表中当前正在处理的节点的下一个节点
[0029]链接单元,用于所述第一判断单元判断达到下一个节点的处理时刻时,将所述下一个节点的消息链表链接到当前链表的尾部。[0030]结合第三方面或第三方面的第一种可能的实现方式,在第二种可能的实现方式中,还包括:
[0031]删除单元,用于在所述链接单元将所述下一个节点的消息链表链接到当前链表的尾部后,删除所述头节点链表中所述下一个节点的消息链表对应的节点,其中,所述下一个节点的消息链表为所述并行头节点链表或串行头节点链表中的下一个节点的消息链表。
[0032]结合第三方面或第三方面的第一种或第二种可能的实现方式,在第三种可能的实现方式中,
[0033]所述获取单元获取的所述处理队列组中的头节点链表中还包括:将所述头节点链表中每个头节点的头指针域和尾指针域,分别指向对应的所述消息链表的头部和尾部,其中,所述头节点链表中的每个头节点包括:并行头节点链表中的每个头节点和串行头节点链表中的每个头节点。
[0034]结合第三方面或第三方面的第一种或第二种或第三种可能的实现方式,在第四种可能的实现方式中,所述分类单元,包括:
[0035]第二判断单元,用于判断所述消息中是否包括指示信息;
[0036]第一分类单元,用在所述第二判断单元判断所述消息中包括指示信息时,按照所述指示信息对所述消息进行分类;
[0037]放入单元,将所述分类子单元分类的所述消息放入对应的处理队列组中对应时刻的相应消息链表中;
[0038]第二分类单元,用于在所述第二判断单元判断所述消息中没有包括指示信息时,将所述消息放入对应的串行处理队列组中对应时刻的相应消息链表中。
[0039]第四方面提供了一种控制消息进入队列的装置,包括:
[0040]接收单元,用于接收消息;
[0041]添加单元,用于在接收到的所述消息中添加指示信息,以便于接收到所述消息的处理器按照所述指示信息对所述消息进行分类,并对分类后的所述消息处理。
[0042]在第四方面的第一种可能的实现方式中,所述添加单元在接收到的所述消息中添加的指示信息包括并行标识或串行标识。
[0043]由上述技术方案可知,本发明实施例中,由于要处理的消息预先按照消息的依赖关系进行分类,并将分类后的消息放入对应的并行处理队列组和串行处理队列中。当达到并行处理队列组中的并行头节点链表的节点和串行处理队列组中的串行头节点链表的节点时,可以对并行头节点链表中的节点和串行处理队列组中的串行头节点链表中的节点进行并行处理;从而提高了消息的处理时效;另外,在该实施例中,通过先进先出,使消息处理时机更公平,也减少了应用程序无响应的概率。
【专利附图】
【附图说明】
[0044]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0045]图1为现有技术中多个消息进入队列的顺序的示意图;[0046]图2为本发明实施例提供的一种消息队列的处理方法的流程图;
[0047]图3为本发明实施例中提供的一种串行处理队列组的结构示意图;
[0048]图4为本发明实施例中提供的一种并行处理队列组的结构示意图;
[0049]图5为本发明实施例提供的一种消息队列的处理方法的另一流程图;
[0050]图6为本发明实施例提供的一种控制消息进入队列的方法的流程图;
[0051]图7为本发明实施例提供的一种消息队列的处理装置的结构示意图;
[0052]图8为本发明实施例提供的一种控制消息进入队列装置的结构示意图;
[0053]图9为本发明实施例提供的一种移动终端的结构示意图;
[0054]图10为本发明实施例提供的一种移动终端的应用实例的结构示意图。
【具体实施方式】
[0055]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0056]请参阅图2,图2为本发明实施例提供的一种消息队列的处理方法的流程图;所述方法应用于移动终端的操作系统,所述方法包括:
[0057]步骤201:接收需要处理的消息;
[0058]该步骤中,移动终端的接口接收到消息,将该消息发送给处理器。其中,所述消息,可以是操作系统下的任何消息,比如,用户操作界面后,系统发出的操作消息,再比如,用户敲击键盘后,系统发出的指令消息等。
[0059]步骤202:按照所述消息的依赖关系进行分类,并将分类后的消息放入对应的处理队列组中,所述处理队列组包括:并行处理队列组和串行处理队列;
[0060]该步骤中,先判断所述消息中是否包括指示信息,如果包括指示信息,则按照所述指示信息对所述消息进行分类,将分类后的所述述消息放入对应的处理队列组中对应时刻的相应消息链表中;如果没有包括指示信息,则将所述消息放入对应的串行处理队列组中对应时刻的相应消息链表中。
[0061]其中,所述指示信息包括并行标识和串行标识,也就是说,按照所述消息中的并行标识或串行标识对该消息进行分类。如果消息中包括并行标识,则说明该消息为独立消息,可以将该消息放入对应的并行处理队列组中,如果消息中包括串行标识,则说明该消息与之前的消息存在关联,比如在时间顺序上,或者在后处理的消息用到在前处理消息的处理结果等,以将该消息放入对应的串行处理队列组中。
[0062]如果该消息中没有包括并行标识或串行标识,则将所述消息中放入对应的串行处理队列组中对应时刻的相应消息链表中。
[0063]其中,所述依赖关系,比如,A消息和B消息,处理B消息时,要用到A消息的处理结果,所以,A消息和B消息之间存在依赖关系,否则A消息和B消息不存在依赖关系,即A消息和B消息分别为独立消息。
[0064]步骤203:获取所述处理队列组中的头节点链表,所述头节点链表为对应的处理队列组中每个不同时刻对应的消息链表的节点连接在一起的链表;其中,所述头节点链表包括:并行处理队列组中的并行头节点链表和串行处理队列组中的串行头节点链表;
[0065]在该实施例中,移动终端可以只获取到并行处理队列组中的并行头节点链表,也可以只获取串行处理队列组中的串行头节点链表,当然,还可以同时获取并行处理队列组中的并行头节点链表和串行处理队列组中的头节点链表。本实施例中,为了区分并行处理队列组和串行处理队列组的头节点链表,而将该并行处理队列组中的头节点链表称为并行头节点链表,将该串行处理队列组中的头节点链表称为串行头节点链表。
[0066]其中,串行处理队列组中的串行头节点链表、消息链表以及队列头指针,具体如图3所示,图3为本发明实施例中提供的一种串行处理队列组的结构示意图;并行处理队列组中的并行头节点链表、消息链表以及队列头指针,具体如图4所示,图4为本发明实施例中提供的一种并行处理队列组的结构示意图。
[0067]如图3所示,串行头节点链表中包括O至N个节点,N为自然数,每个节点对应一个消息链表。所述每个节点包括下一个节点地址(next)、处理时刻(time )、消息链表尾节点地址(tail)和消息链表头节点地址(head),且第O节点中的next指向第I号节点,第I号节点中的next指向第2节点,直至,第N-1个节点中的next指向第N个节点中的O ;每个消息链表包括:各个消息(图1中以O个至η个消息为例,η为消息的个数)的消息内容(data)和下一个next,且第O个消息的next指向第I个消息,第I个消息的next指向第2个消息;依次类推,第η-1个消息的next指向第η个消息,第η个消息为最后一个消息。并且,每个节点中的head指向消息链表中第O个消息,tail指向第η个消息。并且,队列头指针指向第O个节点。
[0068]其中,图4中所示的并行处理队列组的机构与图3中所述串行处理队列组的结构类似,其不同之处为:图4中是并行处理队列组包括串行头节点链表,而图3中是串行处理队列组包括串行头节点链表。其并行头节点链表与串行头节点链表的结构相同。
[0069]其获取头节点链表的方式可以通过对应的队列头指针获取,比如,通过并行处理队列组的队列头指针获取并行处理队列组中的并行头节点链表;而通过串行处理队列组的队列头指针获取串行处理队列组中的串行头节点链表等。
[0070]其中,所述并行处理队列组中存储有不同时刻接收到的相互独立的消息,每个时刻接收到的消息都有一个消息链表(比如O号至N个节点的消息链表等),每个时刻的消息链表的节点连接在一起,并且,该并行处理队列组中的消息之间没有相互依赖关系(即都是独立消息),且每个消息的数据之间相互连接,就得到了并行处理队列组中的并行头节点链表;而并行头节点链表中的每个节点的头部和尾部的指针分别指向对应的所述消息链表中的头部和尾部。也就是说,并行头节点链表包括多个节点的头部信息,而每个节点的头部对应一个数据部,本文中称为消息链表,该消息链表中存储有消息的数据信息,其数据信息之间相互连接;同理,串行头节点链表包括多个节点的头部信息;而每个节点的头部对应一个数据部,本文中称为消息链表,该消息链表中存储有每个消息的数据信息,其数据信息之间相互连接。
[0071]也就是说,本实施例中的行处理队列组中和串行处理队列组中的消息,均是移动终端在接收到消息时,按照消息的依赖关系(即消息之间在时间顺序上相互关联)判断该消息是独立消息(即与之前消息没有相互关联的消息),还是与之前已接收到的消息有相互依赖关系,如果是独立消息,则将该消息放入并行处理队列组中,如果存在相互依赖关系,则放入串行处理队列组中。其具体的判断方式,可以通过消息中的指示信息来判断,比如,通过消息中的指示域来指示该消息之间是否相互依赖等,或者在该消息的空闲字段中添加标识位信息等。
[0072]步骤204:在达到对应的所述头节点链表中的节点的处理时刻时,对所述头节点链表中的节点的消息链表进行处理。
[0073]该步骤中,在达到所述并行头节点链表的节点的处理时刻时,对所述并行头节点链表的节点的消息链表进行处理;在达到所述串行头节点链表中的节点的处理时刻时,对所述串行头节点链表中的节点的消息链表进行处理,也就是说,可以同时对并行头节点链表的节点和串行头节点链表的节点进行并行处理。
[0074]在该实施例中,由于并行头节点链表和串行头节点链表中分别包括不同时刻接收到的消息,将同一时间段内接收到的同一类消息划分到同一个节点的消息链表中,比如O节点至N节点的一个节点对应的消息链表。
[0075]在获取对应队列的头节点链表后,判断是否达到对应队列中,对应头节点链表中的节点的处理时刻,如果达到,则对并行和串行头节点链表中的节点对应的消息链表中的数据进行相应处理。
[0076]也就是说,如果达到串行头节点链表中的节点的处理时刻,则对该串行头节点链表中的节点的消息链表中各个数据依次进行处理;其处理过程可以通过处理函数进行处理;
[0077]如果达到并行头节点链表中的节点的处理时刻,则对并串行头节点链表中的节点的消息链表中各个数据依次进行处理;其处理过程可以通过处理函数进行处理;
[0078]即并行头节点链表中的节点额处理过程,和串行头节点链表中的节点的处理过程,是并行的处理过程。
[0079]本发明实施例中,对串行处理队列组和并行处理队列组中的消息进行处理的过程也不完全相同。其中,串行处理队列组的处理原则是:有一个消息循环不停的检测串行处理队列组,首先通过串行处理队列组的队列头指针获得串行头节点链表,查看“第O号节点”的next指向的下一节点是否到达了处理时刻,如果到达了下一节点的处理时刻,则将到达处理时刻的消息链表放到当前链表的尾部。然后,判断当前链表是否为空,如果为非空,则从当前列表中部取出一个节点交给处理函数去处理,处理完成后再进入下一次循环,如果为空,则本次循环结束直接进入下一次循环。
[0080]所述并行处理队列组的处理原则与串行处理队列组的处理原则基本相同,其不同之处在于,当判断当前链表为非空时,从当前链表的头部取出一个节点的消息交给处理函数去处理,而不用等待该消息处理完即可取下一个节点的消息去处理。
[0081]需要说明的是,本实施例中串行处理队列组和并行处理队列组两个队列组可以在两个线程中同时处理。
[0082]本发明实施例中,本发明实施例中,由于要处理的消息预先按照消息的依赖关系进行分类,并将分类后的消息放入对应的并行处理队列组和串行处理队列中。当达到并行处理队列组中的并行头节点链表的节点和串行处理队列组中的串行头节点链表的节点时,可以对并行头节点链表中的节点和串行处理队列组中的串行头节点链表中的节点进行并行处理;从而提高了消息的处理时效;另外,在该实施例中,通过先进先出,使消息处理时机更公平,也减少了应用程序无响应的概率。
[0083]可选的,在另一实施例中,该实施例在上述实施例的基础上,所述方法还可以包括:移动终端通过处理函数在对节点进行处理时,可以判断是否达到当前正在处理的节点的下一个节点的处理时刻,如果达到,则将当前正在处理的节点的下一个节点的消息链表链接到当前链表的尾部,以便于在处理完正在处理的节点的消息后,直接所述下一个节点中的消息链表;具体包括:
[0084]移动终端判断是否达到所述并行头节点链表中正在处理的节点的下一个节点的处理时刻,如果是,将所述并行头节点链表中的下一个节点的消息链表链接到当前链表(称为第一当前链表)的尾部;和
[0085]移动终端判断是否达到所述串行头节点链表中正在处理的节点的下一个节点的处理时刻,如果是,将所述串行头节点链表中的下一个节点的消息链表链接到当前链表(称为第二当前链表)的尾部。
[0086]该实施例中的第一当前链表和第二当前链表,是为了区分对并行处理队列组中的消息和串行处理队列组中的消息。
[0087]本发明实施例中,当达到节点的处理时刻是,先将该节点对应的消息链表放到当前链表中,以便于在对当前正在处理的节点处理完成后,直接对该当前链表中的节点对应的消息链表的消息内容进行并行处理,从而进一步的提高了处理效率,同时,通过先进先出,使消息处理时机更公平,也减少了应用程序无响应的概率。
[0088]可选的,在另一实施例中,该实施例在上述实施例的基础上,所述方法还可以包括:在将所述下一个节点的消息链表链接到当前链表的尾部后,删除所述头节点链表中所述下一个节点的消息链表对应的节点,其中,所述下一个节点的消息链表为所述并行头节点链表或串行头节点链表中的下一个节点的消息链表。
[0089]在将所述并行头节点链表中的下一个节点的消息链表链接到第一当前链表的尾部后,删除所述并行头节点链表中正在处理的节点的下一个节点的消息链表对应的节点;以及,在将所述串行头节点链表中的下一个节点的消息链表链接到第二当前链表的尾部后,删除所述串行头节点链表中正在处理的节点的下一个节点的消息链表对应的节点。
[0090]如,移动终端正在对并行头节点链表中的O号节点的消息链表中的消息进行处理,先读取该并行头节点链表中的O号节点的下一个节点(即I号节点)的处理时刻;然后,判断是否达到所述并行头节点链表中的下一个节点(即I号节点)的处理时刻,如果是,将所述并行头节点链表中的下一个节点(即I号节点)的消息链表链接到当前链表尾(即当前链表的尾部),然后,删除所述并行头节点链表中所述下一个节点的消息链表对应的节点。
[0091]再比如,移动终端正在对串行头节点链表中的O号节点的消息链表中的消息进行处理,先读取该串行头节点链表中的O号节点的下一个节点(即I号节点)的处理时刻;然后,判断是否达到所述串行头节点链表中的下一个节点(即I号节点)的处理时刻,如果是,将所述串行头节点链表中的下一个节点(即I号节点)的消息链表链接到当前链表尾(即当前链表的尾部),然后,删除所述串行头节点链表中所述下一个节点的消息链表对应的节点。
[0092]当然,也可以同时对串行头节点链表的O号节点的消息链表和并行头节点链表中的O号节点的消息链表进行处理,具体的处理分别详见上述,在此不再赘述。
[0093]本发明实施例中,通过将消息进行分类,并对分类的消息进行并行处理,提高了处理效率,同时通过先进先出,使消息处理时机更公平,也减少了应用程序无响应的概率。
[0094]可选的,在另一实施例中,该实施例在上述实施例的基础上,所述按照所述消息的依赖关系进行分类,并将分类后的消息放入对应的处理队列组中,包括:
[0095]移动终端在接收到消息时;先判断所述消息中是否存在依赖关系(可以通过是否包括指示信息来判断),如果存在依赖关系(即包括指示信息),则按照所述指示信息对所述消息进行分类,并将分类后的所述消息放入对应的处理队列组中对应时刻的相应消息链表中;如果不存依赖关系(即没有包括指示信息),则将所述消息放入对应的串行处理队列组中对应时刻的相应消息链表中;其中,所述指示信息包括并行标识或串行标识;所述指示信息具体可以是在消息中的标识位,或者,在该消息的空闲字段中增加依赖信息或标识信息等。
[0096]其中,所述判断所述消息是否存在依赖关系,可以是:按照所述消息中的指示信息判断所述消息是否存在依赖关系,具体可以是在消息中标识位,或者,在该消息的空闲字段中增加依赖信息或标识信息等。
[0097]也就是说,如果消息中包括并行标识,则将所述消息放入并行处理队列组;如果消息中包括串行标识,则将所述消息放入串行处理队列组;如果所述消息中没有包括并行标识和串行标识,则将所述消息放入串行处理队列组。
[0098]其中,所述并行处理队列组中每个不同时刻对应的消息链表的节点连接在一起,得到对应的并行头节点链表,以及所述串行处理队列组中每个不同时刻对应的消息链表的节点连接在一起,得到对应的串行头节点链表;所述并行头节点链表和串行头节点链表中的每个节点的头指针域和尾指针域,分别指向对应的所述消息链表的头部和尾部;所述并行处理队列组的队列头指针指向所述并行头节点链表中正在处理或将要处理的节点(即第O号节点),以及所述串行处理队列组的队列头指针指向所述串行头节点链表中正在处理或将要处理的节点(即第O号节点)。
[0099]还请参阅图5,为本发明实施例提供的一种消息队列的处理方法的另一流程图,所述方法包括:
[0100]步骤501:接收消息;所述消息可以是Handler消息队列中的消息,也可以是用户操作界面后,系统发出的消息,当然,也可以是操作系统下的其他消息等。
[0101]步骤502:判断所述消息是否存在依赖关系,如果是,执行步骤503 ;否则,执行步骤 504 ;
[0102]其中,其判断消息之间是否存在依赖关系具体可以参考上述,在此不再赘述。
[0103]步骤503:将所述消息放入串行处理队列组中对应时刻的相应消息链表尾;其中,所述串行处理队列组中每个不同时刻对应的消息链表的节点连接在一起,得到对应的串行头节点链表;所述串行头节点链表中的每个节点的头指针域和尾指针域,分别指向对应的所述消息链表的头部和尾部;所述串行处理队列组的队列头指针指向所述串行头节点链表中正在处理或将要处理的节点(即第O号节点);
[0104]步骤504:将所述消息放入并行处理队列组中对应时刻的相应消息链表尾;其中,所述并行处理队列组中每个不同时刻对应的消息链表的节点连接在一起,得到对应的并行头节点链表;所述并行头节点链表和串行头节点链表中的每个节点的头指针域和尾指针域,分别指向对应的所述消息链表的头部和尾部;所述并行处理队列组的队列头指针指向所述并行头节点链表中的正在处理或将要处理的节点(即第O号节点)。
[0105]在该实施例中,移动终端在接收到消息时,按照消息的依赖关系将消息放到串行处理队列组或并行处理队列组中对应时刻的消息链表中,每个队列同一时刻需要处理的消息放到同一消息链表中,与每个消息链表对应一个节点,每个消息链表对应的节点连起来组成了一个头节点链表(如果串行队列,就是串行头节点链表,如果是并行,就是并行头节点链表),队列头指针指向头节点链表头。当前时刻处理的消息组成的链表叫做当前链表,头节点链表的第O号节点的头指针域和尾指针域指向第O号节点的头部和尾部,第O号节点可以为空,即没有要处理的消息。
[0106]本发明实施例中,按照消息的依赖关系,将该消息放到对应的并行处理队列组和者串行处理队列组中,然后,对并行处理队列组和者串行处理队列进行并行处理,即通过双队列多链表的形式实现对消息队列的并行处理,从而提高了处理效率,同时,由于通过先进先出,使消息处理时机更公平,减少了应用程序无响应的概率,即通过先来先服务的机制实现了消息处理的公平性和无响应的概率。
[0107]相应的,还请参阅图6,图6为本发明实施例还提供一种控制消息进入队列的方法的流程图,所述方法包括:
[0108]步骤:601:接收消息;
[0109]移动终端的接口接收外部发送来的消息。
[0110]步骤:602:在所述消息中添加指示信息,以便于接收到所述消息的处理器按照添加的指示信息对所述消息进行分类,并对分类后的所述消息进行并行处理。其中,所述指示信息包括:并行标识或串行标识。
[0111]其中,可以在消息中标识位中添加指示信息,也可以在该消息的空闲字段中增加指示信息,或者标识消息件相互依赖或不依赖的信息或标识信息等。
[0112]该实施例中,移动终端的接口在接收到所述消息添加指示信息,并将添加指示信息后的消息发送给处理器,以便于处理器在接收到该添加指示消息的消息后,按照该指示信息对该消息进行分类,并将分类后的消息放入对应的并行处理队列组和串行处理队列,然后,对并行处理队列组和串行处理队列进行并行处理,以提高消息的处理时效。
[0113]基于上述方法的实现过程,本发明实施例还提供一种队列消息的处理装置,应用于移动终端的操作系统,其处理装置的结构示意图如图7所示,所述装置包括:接收单元71、分类单元72、获取单元73和处理单元74,其中,所述接收单元71,用于接收需要处理的消息;所述分类单元72,用于按照所述消息的依赖关系,并将分类后的消息放入对应的处理队列组中,所述处理队列组包括:并行处理队列组和串行处理队列;所述获取单元73,用于获取所述处理队列组中的头节点链表,所述头节点链表为对应的处理队列组中每个不同时刻对应的消息链表的节点连接在一起的链表;其中,所述头节点链表包括:并行处理队列组中的并行头节点链表和串行处理队列组中的串行头节点链表;所述处理单元74,用于在达到对应的所述头节点链表中的节点的处理时刻时,对所述头节点链表中的节点的消息链表进行处理。。
[0114]可选的,所述装置还可以包括:第一判断单元和链接单元,其中,所述第一判断单元,用于判断是否达到下一个节点的处理时刻,其中,所述下一个节点为所述并行头节点链表中或所述串行头节点链表中当前正在处理的节点的下一个节点;所述链接单元,用于所述第一判断单元判断达到下一个节点的处理时刻时,将所述下一个节点的消息链表链接到当前链表的尾部。
[0115]其中,在该实施例中,所述第一判断单元可以包括第一判断子单元,所述连接单元可以包括第一链接单元;和,所述第一判断单元可以包括第二判断子单元,所述连接单元可以包括第二链接单元,其中,
[0116]所述第一判断子单元,与所述处理单元连接,用于判断是否达到所述并行头节点链表中正在处理的节点的下一个节点的处理时刻,并将达到的判断发送给第一链接单元;所述第一链接单元,用于在接收到所述第一判断单元发送的达到的判断时,将所述并行头节点链表中的下一个节点的消息链表链接到第一当前链表的尾部;
[0117]所述第二判断子单元,与所述处理单元连接,用于判断是否达到所述串行头节点链表中正在处理的节点的下一个节点的处理时刻,并将达到的判断发送给第二链接单元;所述第二链接单元,用于在接收到所述第二判断单元发送的达到的判断时,将所述串行头节点链表中的下一个节点的消息链表链接到第二当前链表的尾部。
[0118]可选的,所述装置还可以包括:删除单元,用于在所述链接单元将所述下一个节点的消息链表链接到当前链表的尾部后,删除所述头节点链表中所述下一个节点的消息链表对应的节点,其中,所述下一个节点的消息链表为所述并行头节点链表或串行头节点链表中的下一个节点的消息链表。
[0119]可选的,所述删除单元具体包括:第一删除单元和第二删除单元,其中,所述第一删除单元,用于在将所述并行头节点链表中的下一个节点的消息链表链接到第一当前链表的尾部后,删除所述并行头节点链表中所述下一个节点的消息链表对应的节点;所述第二删除单元,用于在将所述串行头节点链表中的下一个节点的消息链表链接到第二当前链表的尾部后,删除所述串行头节点链表中所述下一个节点的消息链表对应的节点。
[0120]可选的,所述装置还可以包括:所述获取单元获取的所述处理队列组中的头节点链表中还包括:将所述头节点链表中的每个头节点的头指针域和尾指针域,分别指向对应的所述消息链表的头部和尾部,其中,所述头节点链表中的每个头节点包括:并行头节点链表中的每个头节点和串行头节点链表中的每个头节点。
[0121]可选的,所述分类单元,包括:第二判断单元,第一分类单元,放入单元和第二分类单元,其中,所述第二判断单元,用于判断所述消息中是否包括指示信息;所述第一分类单元,用在所述第二判断单元判断所述消息中包括指示信息时,按照所述指示信息对所述消息进行分类;所述放入单元,将所述分类子单元分类的所述消息放入对应的处理队列组中对应时刻的相应消息链表中;所述第二分类单元,用于在所述第二判断单元判断所述消息中没有包括指示信息时,将所述消息放入对应的串行处理队列组中对应时刻的相应消息链表中。
[0122]所述装置中,各个单元的功能和作用的实现过程详见上述方法中对应的实现过程,在此不再赘述。
[0123]本发明实施例中,先对接收到的消息进行分类,然后将分类后的消息放入对应的并行处理队列组和串行处理队列,然后,对并行处理队列组和串行处理队列进行并行处理,提闻了消息的处理时效。
[0124]本发明实施例提供的一种控制消息进入队列的装置,其结构示意图如图8所示,所述装置包括:接收单元81和添加单元82,其中,
[0125]所述接收单元81,用于接收消息;所述添加单元82,用于在接收到的所述消息中添加指示信息,以便于接收到所述消息的处理器按照添加的指示信息对所述消息进行分类,并对分类后的所述消息并行处理。
[0126]其中,所述添加单元在接收到的所述消息中添加的指示信息包括并行标识或串行标识。
[0127]所述装置中,各个单元的功能和作用的实现过程详见上述方法中对应的实现过程,在此不再赘述。
[0128]本发明实施例还提供一种移动终端,其结构示意图如图9所示,所述移动终端9包括:收发器91和处理器92,其中,所述收发器91,用于接收需要处理的消息;所述处理器92,用于按照所述消息的依赖关系进行分类,并将分类后的消息放入对应的处理队列组中,所述处理队列组包括:并行处理队列组和串行处理队列;所述收发器91,还用于获取所述处理队列组中的头节点链表,所述头节点链表为对应的处理队列组中每个不同时刻对应的消息链表的节点连接在一起的链表;其中,所述头节点链表包括:并行处理队列组中的并行头节点链表和串行处理队列组中的串行头节点链表;所述处理器92,还用于在达到对应的所述头节点链表中的节点的处理时刻时,对所述头节点链表中的节点的消息链表进行处理。
[0129]可选的,所述处理器,还用于在达到下一个节点的处理时刻时,将所述下一个节点的消息链表链接到当前链表的尾部,其中,所述下一个节点为所述并行头节点链表中或所述串行头节点链表中当前正在处理的节点的下一个节点。
[0130]可选的,所述处理器,还用于在将所述下一个节点的消息链表链接到当前链表的尾部后,删除所述头节点链表中所述下一个节点的消息链表对应的节点,其中,所述下一个节点的消息链表为所述并行头节点链表或串行头节点链表中的下一个节点的消息链表。
[0131]可选的,所述收发器,还用于将获取到的所述头节点链表中的每个头节点的头指针域和尾指针域,分别指向对应的所述消息链表的头部和尾部,其中,所述头节点链表中的每个头节点包括:并行头节点链表中的每个头节点和串行头节点链表中的每个头节点。
[0132]可选的,所述处理器,还用于所述处理器对接收到的消息进行分类,并将分类后的消息放入对应的处理队列组中,包括:
[0133]判断所述消息中是否包括指示信息,如果包括指示信息,则按照所述指示信息对所述消息进行分类,将分类后的所述述消息放入对应的处理队列组中对应时刻的相应消息链表中;如果没有包括指示信息,则将所述消息放入对应的串行处理队列组中对应时刻的相应消息链表中。
[0134]所述移动终端中的收发器和处理器的功能和作用的实现过程,详见上述方法中对应的实现过程,在此不再赘述。
[0135]本发明实施例还提供另一种移动终端,所述移动终端包括:收发器和处理器,其中,所述接收器,用于接收消息;所述处理器,用于在所述消息中添加指示信息,以便于接收到所述消息的处理器按照添加的指示信息对所述消息进行分类,并对分类后的所述消息进行并行处理。
[0136]所述移动终端中的收发器和处理器的功能和作用的实现过程,详见上述方法中对应的实现过程,在此不再赘述。
[0137]相应的,本发明实施例还提供一种移动终端,所述移动终端包括:存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
[0138]接收需要处理的消息;
[0139]按照所述消息的依赖关系进行分类,并将分类后的消息放入对应的处理队列组中,所述处理队列组包括:并行处理队列组和串行处理队列;
[0140]获取所述处理队列组中的头节点链表,所述头节点链表为对应的处理队列组中每个不同时刻对应的消息链表的节点连接在一起的链表;其中,所述头节点链表包括:并行处理队列组中的并行头节点链表和串行处理队列组中的串行头节点链表;
[0141 ] 在达到对应的所述头节点链表中的节点的处理时刻时,对所述头节点链表中的节点的消息链表进行处理。
[0142]为例便于理解,还请参阅下述实施例。
[0143]还请参阅图10,图10为本发明实施例提供的一种移动终端的应用实例的结构示意图。该移动终端可以用于实施上述实施例中提供的方法。优选的:
[0144]移动终端800可以包括通信单元110、包括有一个或一个以上计算机可读存储介质的存储器120、输入单元130、显示单元140、传感器150、音频电路160、WIFI (WirelessFidelity,无线保真)模块170、包括有一个或者一个以上处理核心的处理器180、以及电源190等部件。本领域技术人员可以理解,图中示出的移动终端结构并不构成对移动终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
[0145]通信单元110可用于收发信息或通话过程中,信号的接收和发送,该通信单元110可以为RF (Radio Frequency,射频)电路、路由器、调制解调器、等网络通信设备。特别地,当通信单元110为RF电路时,将基站的下行信息接收后,交由一个或者一个以上处理器180处理;另外,将涉及上行的数据发送给基站。通常,作为通信单元的RF电路包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,通信单元110还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于 GSM (Global System of Mobile communication,全球移动通讯系统)、GPRS (GeneralPacket Radio Service,通用分组无线服务)、CDMA (Code Division Multiple Access,石马分多址)、WCDMA (Wideband Code Division Multiple Access,宽带码分多址)、LTE (LongTerm Evolution,长期演进)、电子邮件、SMS (Short Messaging Service,短消息服务)等。存储器120可用于存储软件程序以及模块,处理器180通过运行存储在存储器120的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据移动终端800的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器120还可以包括存储器控制器,以提供处理器180和输入单元130对存储器120的访问。
[0146]输入单元130可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。优选地,输入单元130可包括触敏表面131以及其他输入设备132。触敏表面131,也称为触摸显示屏或者触控板,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触敏表面131上或在触敏表面131附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触敏表面131可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器180,并能接收处理器180发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触敏表面131。除了触敏表面131,输入单元130还可以包括其他输入设备132。优选地,其他输入设备132可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
[0147]显示单元140可用于显示由用户输入的信息或提供给用户的信息以及移动终端800的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元140可包括显示面板141,可选的,可以采用LOXLiquid Crystal Display,液晶显示器)、0LED (Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板141。进一步的,触敏表面131可覆盖显示面板141,当触敏表面131检测到在其上或附近的触摸操作后,传送给处理器180以确定触摸事件的类型,随后处理器180根据触摸事件的类型在显示面板141上提供相应的视觉输出。虽然在图11中,触敏表面131与显示面板141是作为两个独立的部件来实现输入和输入功能,但是在某些实施例中,可以将触敏表面131与显示面板141集成而实现输入和输出功能。
[0148]移动终端800还可包括至少一种传感器150,比如光传感器、运动传感器以及其他传感器。光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板141的亮度,接近传感器可在移动终端800移动到耳边时,关闭显示面板141和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于移动终端800还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
[0149]音频电路160、扬声器161,传声器162可提供用户与移动终端800之间的音频接口。音频电路160可将接收到的音频数据转换后的电信号,传输到扬声器161,由扬声器161转换为声音信号输出;另一方面,传声器162将收集的声音信号转换为电信号,由音频电路160接收后转换为音频数据,再将音频数据输出处理器180处理后,经RF电路110以发送给比如另一移动终端,或者将音频数据输出至存储器120以便进一步处理。音频电路160还可能包括耳塞插孔,以提供外设耳机与移动终端800的通信。
[0150]为了实现无线通信,该移动终端上可以配置有无线通信单元170,该无线通信单元170可以为WIFI模块。WIFI属于短距离无线传输技术,移动终端800通过无线通信单元170可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图中示出了无线通信单元170,但是可以理解的是,其并不属于移动终端800的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
[0151]处理器180是移动终端800的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器120内的软件程序和/或模块,以及调用存储在存储器120内的数据,执行移动终端800的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器180可包括一个或多个处理核心;优选的,处理器180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器180中。
[0152]移动终端800还包括给各个部件供电的电源190 (比如电池),优选的,电源可以通过电源管理系统与处理器180逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源190还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
[0153]尽管未示出,移动终端800还可以包括摄像头、蓝牙模块等,在此不再赘述。
[0154]在本实施例中,移动终端还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行本发明实施例提供的方法的指令。
[0155]此外,典型地,本发明所述的移动终端可为各种手持移动终端,例如手机、个人数字助理(PDA)等,因此本发明的保护范围不应限定为某种特定类型的移动终端。
[0156]此外,根据本发明的方法还可以被实现为由CPU执行的计算机程序。在该计算机程序被CPU执行时,执行本发明的方法中限定的上述功能。
[0157]此外,上述方法步骤以及系统单元也可以利用控制器以及用于存储使得控制器实现上述步骤或单元功能的计算机程序的计算机可读存储设备实现。
[0158]此外,应该明白的是,本文所述的计算机可读存储设备(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。作为例子而非限制性的,非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)或快闪存储器。易失性存储器可以包括随机存取存储器(RAM),该RAM可以充当外部高速缓存存储器。作为例子而非限制性的,RAM可以以多种形式获得,比如同步RAM (DRAM)、动态RAM (DRAM)、同步DRAM (SDRAM)、双数据速率SDRAM (DDR SDRAM)、增强SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)以及直接RambusRAM(DRRAM)。所公开的方面的存储设备意在包括但不限于这些和其它合适类型的存储器。
[0159]本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现所述的功能,但是这种实现决定不应被解释为导致脱离本发明的范围。[0160]结合这里的公开所描述的各种示例性逻辑块、模块和电路可以利用被设计成用于执行这里所述功能的下列部件来实现或执行:通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。通用处理器可以是微处理器,但是可替换地,处理器可以是任何传统处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器结合DSP核、或任何其它这种配置。
[0161]结合这里的公开所描述的方法或算法的步骤可以直接包含在硬件中、由处理器执行的软件模块中或这两者的组合中。软件模块可以驻留在RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动盘、CD-ROM、或本领域已知的任何其它形式的存储介质中。示例性的存储介质被耦合到处理器,使得处理器能够从该存储介质中读取信息或向该存储介质写入信息。在一个替换方案中,所述存储介质可以与处理器集成在一起。处理器和存储介质可以驻留在ASIC中。ASIC可以驻留在用户终端中。在一个替换方案中,处理器和存储介质可以作为分立组件驻留在用户终端中。
[0162]在一个或多个示例性设计中,所述功能可以在硬件、软件、固件或其任意组合中实现。如果在软件中实现,则可以将所述功能作为一个或多个指令或代码存储在计算机可读介质上或通过计算机可读介质来传送。计算机可读介质包括计算机存储介质和通信介质,该通信介质包括有助于将计算机程序从一个位置传送到另一个位置的任何介质。存储介质可以是能够被通用或专用计算机访问的任何可用介 质。作为例子而非限制性的,该计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储设备、磁盘存储设备或其它磁性存储设备,或者是可以用于携带或存储形式为指令或数据结构的所需程序代码并且能够被通用或专用计算机或者通用或专用处理器访问的任何其它介质。此外,任何连接都可以适当地称为计算机可读介质。例如,如果使用同轴线缆、光纤线缆、双绞线、数字用户线路(DSL)或诸如红外线、无线电和微波的无线技术来从网站、服务器或其它远程源发送软件,则上述同轴线缆、光纤线缆、双绞线、DSL或诸如红外先、无线电和微波的无线技术均包括在介质的定义。如这里所使用的,磁盘和光盘包括压缩盘(CD)、激光盘、光盘、数字多功能盘(DVD)、软盘、蓝光盘,其中磁盘通常磁性地再现数据,而光盘利用激光光学地再现数据。上述内容的组合也应当包括在计算机可读介质的范围内。
[0163]需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0164]尽管前面公开的内容示出了本发明的示例性实施例,但是应当注意,在不背离权利要求限定的本发明的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明的元素可以以个体形式描述或要求,但是也可以设想多个,除非明确限制为单数。[0165]以上所述的【具体实施方式】,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的【具体实施方式】而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种消息队列的处理方法,其特征在于,所述方法应用于移动终端的操作系统,所述方法包括: 接收需要处理的消息; 按照所述消息的依赖关系进行分类,并将分类后的消息放入对应的处理队列组中,所述处理队列组包括:并行处理队列组和串行处理队列; 获取所述处理队列组中的头节点链表,所述头节点链表为对应的处理队列组中每个不同时刻对应的消息链表的节点连接在一起的链表;其中,所述头节点链表包括:并行处理队列组中的并行头节点链表和串行处理队列组中的串行头节点链表; 在达到对应的所述头节点链表中的节点的处理时刻时,对所述头节点链表中的节点的消息链表进行处理。
2.根据权利要求1所述的方法,其特征在于,还包括: 在达到下一个节点的处理时刻时,将所述下一个节点的消息链表链接到当前链表的尾部,其中,所述下一个节点为所述并行头节点链表中或所述串行头节点链表中当前正在处理的节点的下一个节点。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括: 在将所述下一个节点的消息链表链接到当前链表的尾部后,删除所述头节点链表中所述下一个节点的消息链表对应的节点,其中,所述下一个节点的消息链表为所述并行头节点链表或串行头节点链表中的下一个节点的消息链表。
4.根据权利要求1或2所述的方法,其特征在于,所述获取到的所述头节点链表中每个头节点的头指针域和尾指针域,分别指向对应的所述消息链表的头部和尾部,其中,所述头节点链表中的每个头节点包括:并行头节点链表中的每个头节点和串行头节点链表中的每个头节点。
5.根据权利要求4所述的方法,其特征在于,所述按照所述消息的依赖关系进行分类,并将分类后的消息放入对应的处理队列组中,包括: 判断所述消息中是否包括指示信息,如果包括指示信息,则按照所述指示信息对所述消息进行分类,并将分类后的所述消息放入对应的处理队列组中对应时刻的相应消息链表中;如果没有包括指示信息,则将所述消息放入对应的串行处理队列组中对应时刻的相应消息链表中。
6.一种控制消息进入队列的方法,其特征在于,包括: 接收消息; 在所述消息中添加指示信息,以便于接收到所述消息的处理器按照添加的指示信息对所述消息进行分类,并对分类后的所述消息进行并行处理。
7.根据权利要求6所述的方法,其特征在于,所述指示信息包括:并行标识或串行标识。
8.一种消息队列的处理装置,其特征在于,应用于移动终端的操作系统,所述装置包括: 接收单元,用于接收需要处理的消息; 分类单元,用于按照所述消息的依赖关系,并将分类后的消息放入对应的处理队列组中,所述处理队列组包括:并行处理队列组和串行处理队列;获取单元,用于获取所述处理队列组中的头节点链表,所述头节点链表为对应的处理队列组中每个不同时刻对应的消息链表的节点连接在一起的链表;其中,所述头节点链表包括:并行处理队列组中的并行头节点链表和串行处理队列组中的串行头节点链表; 处理单元,用于在达到对应的所述头节点链表中的节点的处理时刻时,对所述头节点链表中的节点的消息链表进行处理。
9.根据权利要求8所述的装置,其特征在于,还包括: 第一判断单元,用于判断是否达到下一个节点的处理时刻,其中,所述下一个节点为所述并行头节点链表中或所述串行头节点链表中当前正在处理的节点的下一个节点 链接单元,用于所述第一判断单元判断达到下一个节点的处理时刻时,将所述下一个节点的消息链表链接到当前链表的尾部。
10.根据权利要求8或9所述的装置,其特征在于,还包括: 删除单元,用于在所述链接单元将所述下一个节点的消息链表链接到当前链表的尾部后,删除所述头节点链表中所述下一个节点的消息链表对应的节点,其中,所述下一个节点的消息链表为所述并行头节点链表或串行头节点链表中的下一个节点的消息链表。
11.根据权利要求8或9所述的装置,其特征在于, 所述获取单元获取的所述处理队列组中的头节点链表中还包括:将所述头节点链表中每个头节点的头指针域和尾指针域,分别指向对应的所述消息链表的头部和尾部,其中,所述头节点链表中的每个头节点包括:并行头节点链表中的每个头节点和串行头节点链表中的每个头节点。
12.根据权利要求11所述的装置,其特征在于,所述分类单元包括: 第二判断单元,用于判断所述消息中是否包括指示信息; 第一分类单元,用在所述第二判断单元判断所述消息中包括指示信息时,按照所述指示信息对所述消息进行分类; 放入单元,将所述分类子单元分类的所述消息放入对应的处理队列组中对应时刻的相应消息链表中; 第二分类单元,用于在所述第二判断单元判断所述消息中没有包括指示信息时,将所述消息放入对应的串行处理队列组中对应时刻的相应消息链表中。
13.—种控制消息进入队列的装置,其特征在于,包括: 接收单元,用于接收消息; 添加单元,用于在接收到的所述消息中添加指示信息,以便于接收到所述消息的处理器按照所述指示信息对所述消息进行分类,并对分类后的所述消息处理。
14.根据权利要求13所述的装置,其特征在于,所述添加单元在接收到的所述消息中添加的指示信息包括并行标识或串行标识。
【文档编号】G06F9/38GK103543988SQ201310504955
【公开日】2014年1月29日 申请日期:2013年10月23日 优先权日:2013年10月23日
【发明者】高光远 申请人:华为终端有限公司