【技术实现步骤摘要】
一种队列数据控制方法、系统及队列数据结构
[0001]本申请属于计算机
,尤其涉及一种队列数据控制方法、系统及队列数据结构。
技术介绍
[0002]并发程序是指由若干个可同时执行的程序模块组成的程序,这种可同时执行的程序模块被称为线程。组成一个程序的多个线程可以同时在多台处理器上并发执行,也可在一台处理器上交互执行。多个线程可以通过读写共享数据区或者发消息的方式互相通信,从而相互配合完成任务。多线程的执行方式可以大大缩短程序执行的时间,提高计算机的运行效率。
[0003]然而,多线程程序中最突出的问题就是数据同步问题。多线程在访问内存变量是需要进行同步以保证逻辑的正确性。在多线程中竞争同一资源是对资源访问顺序性敏感称为竞态条件,导致竞态条件发生的代码区域称为临界区。常见的处理方法为在临界区加互斥锁、信号量等。互斥锁基本由两个原语操作组成:加锁和解锁。任何时候只有一个线程成功加锁并执行之后的程序直至该线程解锁。其余线程会不断尝试访问直至该线程被解锁。在此期间,其余线程都会被操作系统挂起并等待唤醒。
[0004]然而,多线程的初衷是为了让任务更快的并行执行,锁机制虽然可以解决多线程场景下的数据同步问题,但却会使并行转为串行,降低的任务的执行效率。在意识到锁同步机制带来的问题后,近年来业界开始对无锁数据结构进行研究。
[0005]原子操作(atomic operation)是指在该指令操作完毕之前不会被任何其它指令或时间终端打断的操作。为了保证多处理器环境中的原子性,CPU提供一系列新的指令原 ...
【技术保护点】
【技术特征摘要】
1.一种队列数据控制方法,其特征在于:建立有若干循环队列,每一个循环队列包括有指向所述循环队列的操作地址的队头指针以及队尾指针;设置插入失败计数器,所述插入失败计数器为长度与所述循环队列的长度相同的数组,所述插入失败计数器用于记录所述循环队列的任意地址中插入元素失败事件;设置取出失败计数器,所述取出失败计数器为长度与所述循环队列的长度相同的数组,所述取出失败计数器用于记录所述循环队列的任意地址中取出元素失败事件;设置基于互斥锁原理的插入失败计数器操作锁和取出失败计数器操作锁;当对所述循环队列进行入队操作时,生产者线程发起第一数据存储请求,获取队尾指针,检查所述队尾指针指向的地址在所述取出失败计数器中是否有所述取出元素失败事件的记录,若存在记录,则锁定所述取出失败计数器操作锁,删除所述取出元素失败事件的记录后释放所述取出失败计数器操作锁,并重新获取队尾指针;当对所述循环队列进行出队操作时,消费者线程发起第一数据取出请求,获取队头指针,检查所述队头指针指向的地址在所述插入失败计数器中是否有所述插入元素失败事件的记录,若存在记录,则锁定所述插入失败计数器操作锁,删除所述插入元素失败事件的记录后释放所述插入失败计数器操作锁,并重新获取队头指针。2.根据权利要求1所述的队列数据控制方法,其特征在于:通过所述插入失败计数器记录所述循环队列的任意地址中插入元素失败事件,所述循环队列的地址与所述插入失败计数器的地址存在映射关系,其中,所述循环队列包括第一地址,所述第一地址与插入失败计数器中的第一映射地址存在映射关系,所述第一映射地址中的元素设置有初始值,当所述第一地址插入元素失败时,所述第一映射地址中元素的值被改写;通过所述取出失败计数器记录所述循环队列的任意地址中取出元素失败事件,所述循环队列的地址与所述取出失败计数器的地址存在映射关系,所述第一地址与所述取出失败计数器中的第二映射地址存在映射关系,所述第二映射地址中的元素设置有初始值,当所述第一地址取出元素失败时,所述第二映射地址中元素的值被改写。3.根据权利要求2所述的队列数据控制方法,其特征在于,当对所述循环队列进行入队操作时,所述方法包括如下步骤:获取队尾指针,所述队尾指针指向所述循环队列中的第一地址;检查所述第二映射地址中元素的值,当所述第二映射地址中元素的值等于所述初始值时,检查所述循环队列的第一地址中的元素是否为空;响应于所述循环队列的第一地址中的元素为空,通过CAS操作增加所述队尾指针的值,并通过CAS操作将所述第一数据存储请求中的元素插入至所述循环队列的第一地址;其中,当通过CAS操作增加所述队尾指针的值失败时,重新获取所述队尾指针;响应于所述循环队列的第一地址中的元素为非空,检查入队操作是否阻塞,当所述入队操作阻塞时,重新获取所述队尾指针;当所述入队操作非阻塞时,重新检查所述循环队列的第一地址中的元素是否为空,响应于所述循环队列的第一地址中的元素为空,通过CAS操作增加所述队尾指针的值,并通过CAS操作将所述第一数据存储请求中的元素插入至所述循环队列的第一地址。4.根据权利要求3所述的队列数据控制方法,其特征在于,所述方法还包括步骤:
检查所述第二映射地址中元素的值,当所述第二映射地址中元素的值不等于初始值时,锁定所述取出失败计数器操作锁并再次确认所述第二映射地址中元素的...
【专利技术属性】
技术研发人员:张宙,阮涛,左海波,梁猛,郦建新,张扬,
申请(专利权)人:浙江齐安信息科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。