多线程处理系统及方法技术方案

技术编号:9865602 阅读:104 留言:0更新日期:2014-04-02 23:51
本发明专利技术公开了一种多线程处理系统及方法,该系统包括一写线程、多个读线程以及一全局next指针,该写线程对一主链表进行写操作,该多个读线程均对该主链表进行读操作;当该写线程对该主链表中的一目标节点进行写操作时,该全局next指针指示该目标节点的下一个节点的地址;当该多个读线程中的至少一个读线程读取至该目标节点时,该至少一个读线程均读取该全局next指针指示的地址并对该目标节点的下一个节点进行读操作。本发明专利技术能够使得读线程越过正在进行写操作的节点而继续对下一节点进行读操作,从而避免了读线程在读取时需要等待释放锁才可以继续读取的缺陷,节约了时间,加快了读线程的读取速度,提供了工作效率。

【技术实现步骤摘要】

本专利技术涉及一种,特别是涉及一种能够使得读线程越过正在进行写操作的节点而继续进行读操作的多线程处理系统以及一种利用该多线程处理系统实现的多线程处理方法。
技术介绍
多线程共享链表是当前数据处理中比较热门的话题,即在该链表数据进行更新时仍有其它线程对该链表进行读操作。一般目前采用的主要处理方法是:在等到该链表更新完毕后才允许对该链表进行读操作,当一线程正在进行写操作时对整个链表进行加互斥锁,让其它线程等待,而对该链表中某一个节点进行写操作时也加互斥锁,让其它线程等待写操作完成之后,解锁并将该结点释放后再进行读操作。这样会导致当链表更新比较频繁时,写线程更新数据需要频繁加锁,而读线程只能等待解锁后才能进行读操作,造成读线程等待时间过长,严重降低了多线程处理的效率。
技术实现思路
本专利技术要解决的技术问题是为了克服现有技术中链表更新比较频繁时,写线程更新数据需要频繁加锁,而读线程只能等待解锁后才能进行读操作,造成读线程等待时间过长,严重降低了多线程处理的效率的缺陷,提供一种能够使得读线程越过正在进行写操作的节点而继续进行读操作的多线程处理系统以及一种利用该多线程处理系统实现的多线程处理方法。本专利技术是通过下述技术方案来解决上述技术问题的:本专利技术提供了一种多线程处理系统,其特点在于,其包括一写线程、多个读线程以及一全局next指针(能够指向下一个节点的地址的指针),该写线程用于对一主链表进行写操作,该多个读线程均用于对该主链表进行读操作;当该写线程对该主链表中的一目标节点进行写操作时,该全局next指针用于指示该目标节点的下一个节点的地址;当该多个读线程中的至少一个读线程读取至该目标节点时,该至少一个读线程均用于读取该全局next指针指示的地址处的节点。对于该主链表,在同一时间段只能进行一个写操作,并且进行写操作的多个节点都是一个个按顺序依次进行的,而读操作则可以多个同时进行,这都属于本领域的公知技术,在此就不再赘述。通过使得读取至该目标节点的该至少一个读线程均读取该全局next指针指示的地址并对该目标节点的下一个节点进行读操作,就避免了在读取至该目标节点时,因为该目标节点正在被写而导致该至少一个读线程都只能等待释放锁才可以继续读取的缺陷,节约了时间,加快了读线程的读取速度,提供了工作效率。较佳地,该写线程对该主链表进行的写操作为一插入节点的操作、一修改节点的操作或一删除节点的操作,该主链表中的每个节点均包括一标志位,该写线程还用于在对该目标节点进行写操作时对该目标节点的标志位进行赋值,以表征该写操作为该插入节点的操作、该修改节点的操作或该删除节点的操作;每个该读线程均具有一相匹配的副链表,该至少一个读线程还用于读取该目标节点的标志位的值,并在检测出该写操作为该插入节点的操作或该修改节点的操作时,分别将该目标节点的地址保存在与该至少一个读线程相匹配的副链表中,并在对该主链表中除该目标节点之外的节点的读操作完成之后分别读取与该至少一个读线程相匹配的副链表中保存的该目标节点的地址,以返回该主链表中读取该目标节点。由于在该写线程对该主链表进行写操作时会添加互斥锁,使得其它读线程只有在解锁并释放节点后才能进行读操作。因此,若该至少一个读线程读取至该目标节点,并通过互斥锁检测出该目标节点正在被写时,该至少一个读线程会跳过该目标节点继续读取下一节点,并且,该至少一个读线程还能够读取该目标节点的标志位的值,从而对该写操作进行检测,并在检测出该写操作为该插入节点的操作或该修改节点的操作时,将该目标节点的地址保存在与该至少一个读线程相匹配的副链表中,而在读取完该主链表中的所有节点后,该至少一个读线程会分别读取相匹配的副链表中保存的该目标节点的地址,从而就能够返回该主链表中读取进行写操作后的该目标节点的内容。而如果该至少一个读线程读取该目标节点的标志位的值后检测出该写操作为该删除节点的操作,则该至少一个读线程只会跳过该目标节点继续读取下一节点,而不会再将该目标节点的地址保存在相匹配的副链表中。较佳地,该目标节点的标志位有八位,当该八位中的第一位的值为I时,表征该写操作为该插入节点的操作,当该八位中的第二位的值为I时,表征该写操作为该修改节点的操作,当该八位中的第三位的值为I时,表征该写操作为该删除节点的操作。若该写操作为该插入节点的操作,则该写线程将该目标节点的八位标志位的第一位赋值为1,若该写操作为该修改节点的操作,则该写线程将该第二位赋值为1,若该写操作为该删除节点的操作,则该写线程将该第三位赋值为I。较佳地,该写线程的写操作的优先级高于该多个读线程的读操作。当该写线程与读线程准备对同一个节点进行操作时,该写线程的写操作优先级高于读线程的读操作,因此会首先对该节点进行写操作,在写操作完成之后才允许读线程进行读操作,从而保证了读线程读取的数据为写操作完成之后更新的数据。本专利技术的目的在于还提供了一种多线程处理方法,其特点在于,其利用上述的多线程处理系统实现,该多线程处理方法为:该写线程对该主链表进行写操作同时该多个读线程均对该主链表进行读操作,并且当该写线程对该主链表中的一目标节点进行写操作时,该全局next指针指示该目标节点的下一个节点的地址,而当该至少一个读线程读取至该目标节点时,该至少一个读线程均读取该全局next指针指示的地址处的节点。较佳地,该写线程对该主链表进行的写操作为一插入节点的操作、一修改节点的操作或一删除节点的操作,该主链表中的每个节点均包括一标志位,该写线程还在对该目标节点进行写操作时对该目标节点的标志位进行赋值,以表征该写操作为该插入节点的操作、该修改节点的操作或该删除节点的操作;每个该读线程均具有一相匹配的副链表,该至少一个读线程还读取该目标节点的标志位的值,并在检测出该写操作为该插入节点的操作或该修改节点的操作时,分别将该目标节点的地址保存在与该至少一个读线程相匹配的副链表中,并在对该主链表中除该目标节点之外的节点的读操作完成之后分别读取与该至少一个读线程相匹配的副链表中保存的该目标节点的地址,以返回该主链表中读取该目标节点。较佳地,该目标节点的标志位有八位,当该八位中的第一位的值为I时,表征该写操作为该插入节点的操作,当该八位中的第二位的值为I时,表征该写操作为该修改节点的操作,当该八位中的第三位的值为I时,表征该写操作为该删除节点的操作。较佳地,该写线程的写操作的优先级高于该多个读线程的读操作。本专利技术的积极进步效果在于:本专利技术能够使得读线程越过正在进行写操作的节点而继续对下一节点进行读操作,从而避免了读线程在读取时需要等待释放锁才可以继续读取的缺陷,节约了时间,加快了读线程的读取速度,提供了工作效率。【附图说明】图1为本专利技术的一较佳实施例的多线程处理系统的结构图。【具体实施方式】下面结合附图给出本专利技术较佳实施例,以详细说明本专利技术的技术方案。如图1所示,本专利技术的多线程处理系统包括一写线程1、多个读线程2以及一全局next指针3。本专利技术的多线程处理系统主要对多个线程共享一主链表进行处理,其中,该写线程I能够对该主链表中的节点进行写操作,而该多个读线程2则能够同时对该主链表中的节点进行读操作,而该主链表中的每个节点均包括一个标志位和节点内容。在本实施例中,该主链表中的节点的标志位均具有本文档来自技高网...
<a href="http://www.xjishu.com/zhuanli/55/201210357027.html" title="多线程处理系统及方法原文来自X技术">多线程处理系统及方法</a>

【技术保护点】
一种多线程处理系统,其特征在于,其包括一写线程、多个读线程以及一全局next指针,该写线程用于对一主链表进行写操作,该多个读线程均用于对该主链表进行读操作;当该写线程对该主链表中的一目标节点进行写操作时,该全局next指针用于指示该目标节点的下一个节点的地址;当该多个读线程中的至少一个读线程读取至该目标节点时,该至少一个读线程均用于读取该全局next指针指示的地址处的节点。

【技术特征摘要】
1.一种多线程处理系统,其特征在于,其包括一写线程、多个读线程以及一全局next指针,该写线程用于对一主链表进行写操作,该多个读线程均用于对该主链表进行读操作; 当该写线程对该主链表中的一目标节点进行写操作时,该全局next指针用于指示该目标节点的下一个节点的地址; 当该多个读线程中的至少一个读线程读取至该目标节点时,该至少一个读线程均用于读取该全局next指针指示的地址处的节点。2.如权利要求1所述的多线程处理系统,其特征在于,该写线程对该主链表进行的写操作为一插入节点的操作、一修改节点的操作或一删除节点的操作,该主链表中的每个节点均包括一标志位,该写线程还用于在对该目标节点进行写操作时对该目标节点的标志位进行赋值,以表征该写操作为该插入节点的操作、该修改节点的操作或该删除节点的操作; 每个该读线程均具有一相匹配的副链表,该至少一个读线程还用于读取该目标节点的标志位的值,并在检测出该写操作为该插入节点的操作或该修改节点的操作时,分别将该目标节点的地址保存在与该至少一个读线程相匹配的副链表中,并在对该主链表中除该目标节点之外的节点的读操作完成之后分别读取与该至少一个读线程相匹配的副链表中保存的该目标节点的地址,以返回该主链表中读取该目标节点。3.如权利要求2所述的多线程处理系统,其特征在于,该目标节点的标志位有八位,当该八位中的第一位的值为I时,表征该写操作为该插入节点的操作,当该八位中的第二位的值为I时,表征该写操作为该修改节点的操作,当该八位中的第三位的值为I时,表征该写操作为该删除节点的操作。4.如权利要求1-3中任意一项所述的多线程处理系统,其特征在于,该写线程的写操作的优先级高于该多个读线程...

【专利技术属性】
技术研发人员:吴振玉郑润
申请(专利权)人:上海斐讯数据通信技术有限公司
类型:发明
国别省市:

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

1