队列的访问方法及装置制造方法及图纸

技术编号:10053737 阅读:129 留言:0更新日期:2014-05-16 02:27
本发明专利技术公开了一种队列的访问方法及装置,属于数据访问技术领域。包括:创建待加入队列的第二节点;获取队尾指针变量的值,判断获取到的值所指向的第一节点中包含的指针变量的值是否为空;若获取到的值所指向的第一节点中包含的指针变量的值为非空,则确定队尾指针变量的值被更新,获取队尾指针变量更新后的值,直至判断队尾指针变量更新后的值所指向的第一节点中包含的指针变量的值为空,将第二节点加入队列,并将获取到的值所指向的第一节点包含的指针变量的值指向第二节点。本发明专利技术当队尾指针变量的值因并行访问而发生更新后,仍然能够继续执行节点的入队列操作,从而在不对队列加锁的情况下实现队列的并行访问,进而提高了访问队列的效率。

【技术实现步骤摘要】
队列的访问方法及装置
本专利技术涉及数据访问
,特别涉及一种队列的访问方法及装置。
技术介绍
在进行数据访问技术的过程中,队列作为一种数据结构,由于其FIFO(FirstInputFirstOutput,先进先出)的特性,被应用于许多场合中,如算法的设计等。其中,在对队列进行访问时,为了提高资源利用率及程序运行的速度,多数情况下程序在逻辑意义上被分割为数个线程,采用多线程并发机制,通过多线程对队列进行访问。相关技术中提供了一种队列的访问方法,在该方法中,当线程A需要访问队列时,会先对该队列加锁,线程A直到访问队列结束后,才会将锁进行解除。按照上述访问方式,线程A在访问队列的过程中,若又到来了一个新的线程B需要对队列进行访问,由于锁并未解除,此时线程B不能对队列进行访问,也就不能对队列中相关变量进行修改。在实现本专利技术的过程中,专利技术人发现相关技术至少存在以下问题:在使用加锁的方法实现多个线程对队列进行访问时,一个线程访问队列,对该队列加锁,若另一个线程需要对队列进行访问,由于该队列已经加锁,此时该线程会由运行状态变为等待状态,并进行上下文切换。而进行上下文切换的过程需要占用本文档来自技高网...
队列的访问方法及装置

【技术保护点】

【技术特征摘要】
1.一种队列访问方法,其特征在于,所述队列中至少包含一个第一节点、队尾指针变量和队头指针变量,所述队尾指针变量的值用于指向所述队列的尾节点,所述尾节点为第一节点,所述队头指针变量的值用于指向伪节点,所述伪节点在所述队列之外,所述队列包含的每个第一节点中至少包含一个指针变量,所述指针变量的值用于指向当前所在节点所连接的下一个节点,尾节点包含的指针变量的值为空,所述方法包括:创建待加入所述队列的第二节点,所述第二节点包括值为空的指针变量;获取所述队尾指针变量的值,并判断获取到的值所指向的第一节点中包含的指针变量的值是否为空;若获取到的值所指向的第一节点中包含的指针变量的值为非空,则确定所述队尾指针变量的值被更新,获取所述队尾指针变量更新后的值,直至判断所述队尾指针变量更新后的值所指向的第一节点中包含的指针变量的值为空,将所述第二节点加入所述队列,并将获取到的值所指向的第一节点包含的指针变量的值指向所述第二节点;获取所述队头指针变量的值,并判断获取到的值所指向的伪节点中包含的指针变量的值是否为空;若所述伪节点中包含的指针变量的值为非空,则在两个不同的时间点上分别获取所述队头指针变量的值,并判断两次获取到的所述队头指针变量的值是否相同;若两次获取到的所述队头指针变量的值不同,则确定所述伪节点被更新,重新在两个不同的时间点上分别获取所述队头指针变量的值,直至判断两次获取到的所述队头指针变量的值相同,释放被更新的伪节点,并将所述被更新的伪节点中包含的指针变量的值所指向的节点作为新的伪节点,所述新的伪节点不属于所述队列;或者,若所述伪节点中包含的指针变量的值为非空,则在两个不同的时间点上分别获取所述伪节点中包含的指针变量的值,并判断两次获取到的所述伪节点中包含的指针变量的值是否相同;若两次获取到的所述伪节点中包含的指针变量的值不同,则确定所述伪节点的下一个节点被更新,重新在两个不同的时间点上分别获取所述伪节点中包含的指针变量的值,直至判断两次获取到的所述伪节点中包含的指针变量的值相同,删除所述伪节点中包含的指针变量的值所指向的节点。2.根据权利要求1所述的方法,其特征在于,所述将所述第二节点加入所述队列,并将获取到的值所指向的第一节点包含的指针变量的值指向所述第二节点之后,还包括:将所述队尾指针变量的值更新为指向所述第二节点的值。3.根据权利要求1所述的方法,其特征在于,所述将所述伪节点中包含的指针变量的值所指向的节点更新为新的伪节点之后,还包括:将所述队头指针变量的值更新为指向所述新的伪节点的值。4.根据权利要求1所述的方法,其特征在于,所述删除所述伪节点中包含的指针变量的值所指向的节点之后,还包括:将所述伪节点中包含的指针变量的值指向被删除的节点的下一个节点。5.根据权利要求1所述的方法,其特征在于,所述判断获取到的伪节点中包含的指针变量的值是否为空之后,还包括:若所述队头指针变量的值所指向的伪节点中包含的指针变量的值为空,则返回删除节点失败的提示。6.一种队列的访问装置,其特征在于,所述队列中至少包含一个第一节点、队尾指针变量和队头指针变量,所...

【专利技术属性】
技术研发人员:贺辉超
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1