The invention relates to the technical field of data storage, and provides a method, device and server for orderly control of storage information by unlocked threads. The methods described include: according to the publish state of the shared memory node in the circular queue, the CAS instruction is called during the reading of the current data from the shared memory node in the focus thread of at least two first threads; when the current data reads end, the release state is modified to a non release state, and the non release state is used to indicate the first line. The process can be stored in the post data after the current data; allocating the shared memory node in the non publishing state for the first thread; the original cursor is updated with the new cursor, based on the storage location of the shared memory node in the circular queue and the consistency of the CAS instruction cursor, and the new cursor is equal to the sum of the original cursor and the one-way amount. In this way, the thread can be controlled to access data orderly, overcoming the additional overhead caused by the storage queue control, and improving the efficiency of thread concurrency.
【技术实现步骤摘要】
一种无锁线程有序控制存储信息的方法、装置和服务器
本专利技术涉及数据存储
,尤其涉及一种无锁线程在循环队列中控制存储信息的方法和装置。
技术介绍
在相关技术中,为了避免应用或者操作系统的线程从存储队列中同时读写存储数据而造成数据冲突,采用对线程加锁的方式控制其串行执行读写操作,由于在持有锁的线程释放锁后,挂起的线程才能加锁以串行读写存储数据,限制了存储队列的并发效率,所以采用无锁线程方式明显更高效。为了使无锁线程有序读写存储数据,针对存储队列有阻塞或非阻塞算法,但都必须保证并发线程同步访问同一存储节点(为了便于描述,下称共享存储节点)以维持存储队列的完整性,分别通过延迟队列(如:生成并检验额外增加的唯一编码)或者限制多线程在有限步骤(如:增加虚节点并控制其出入列)内完成对存储队列中共享存储节点的操作,从而增加了额外开销。在一些情形下,如在服务器上较多线程需要在存储队列中频繁读写存储节点时,突出的额外开销也会降低并发效率。
技术实现思路
有鉴于此,本专利技术提供一种,解决如何在克服额外开销的基础上,对无锁线程从存储队列中存储节点有序读写信息进行控制,以提高线程并发效率。具体地,本专利技术通过如下技术方案实现:第一方面,本专利技术提供一种无锁线程在循环队列中控制存储信息的方法,该方法包括以下具体步骤:根据循环队列中共享存储节点的发布状态,在至少两个第二线程中的焦点线程从共享存储节点中读取当前数据期间调用CAS指令;当读取当前数据结束时,发布状态修改为非发布状态,非发布状态用于指示第一线程可在当前数据之后存入在后数据;为第一线程分配处于非发布状态的共享存储节点 ...
【技术保护点】
1.一种无锁线程在循环队列中控制存储信息的方法,其特征在于,所述方法包括:根据循环队列中共享存储节点的发布状态,在至少两个第二线程中的焦点线程从所述共享存储节点中读取当前数据期间调用CAS指令;当所述当前数据读取结束时,所述发布状态修改为非发布状态,所述非发布状态用于指示第一线程可在所述当前数据之后存入在后数据;为所述第一线程分配处于所述非发布状态的所述共享存储节点;根据所述共享存储节点在所述循环队列中的存储位置和所述CAS指令中原游标的一致性,以新游标更新所述原游标,所述新游标等于所述原游标和单向量之和。
【技术特征摘要】
1.一种无锁线程在循环队列中控制存储信息的方法,其特征在于,所述方法包括:根据循环队列中共享存储节点的发布状态,在至少两个第二线程中的焦点线程从所述共享存储节点中读取当前数据期间调用CAS指令;当所述当前数据读取结束时,所述发布状态修改为非发布状态,所述非发布状态用于指示第一线程可在所述当前数据之后存入在后数据;为所述第一线程分配处于所述非发布状态的所述共享存储节点;根据所述共享存储节点在所述循环队列中的存储位置和所述CAS指令中原游标的一致性,以新游标更新所述原游标,所述新游标等于所述原游标和单向量之和。2.根据权利要求1所述的方法,其特征在于,所述根据循环队列中共享存储节点的发布状态,在至少两个第二线程中的焦点线程从所述共享存储节点中读取当前数据期间调用CAS指令,包括:当所述焦点线程开始读取所述当前数据时,所述焦点线程发送通知信息,所述通知信息中携带用于唯一标识所述存储位置的存储编号;根据所述通知信息调用所述CAS指令。3.根据权利要求1所述的方法,其特征在于,在所述为所述第一线程分配处于所述非发布状态的所述共享存储节点之后,包括:基于所述第一线程向所述共享存储节点中存入所述在后数据,所述非发布状态切换至所述发布状态。4.根据权利要求3所述的方法,其特征在于,所述基于所述第一线程向所述共享存储节点中存入所述在后数据,所述非发布状态切换至所述发布状态,包括:当所述在后数据少于所述共享存储节点中数据总量时,所述非发布状态中的独占状态切换至所述发布状态,所述独占状态用于指示所述第一线程向所述共享存储节点中续存所述在后数据;当所述在后数据等于所述共享存储节点中数据总量时,所述非发布状态中的独占状态切换至所述发布状态。5.根据权利要求1-3所述的方法,其特征在于,所述根据所述共享存储节点在所述循环队列中的存储位置和所述CAS指令中原游标的一致性,以新游标更新所述原游标,包括:当所述存储位置与所述原游标一致时,以所述新游标替换所述原游标。6.根据权利要求1-3所述的方法,其特征在于,...
【专利技术属性】
技术研发人员:刘希伟,王绍民,张凡文,
申请(专利权)人:聚好看科技股份有限公司,
类型:发明
国别省市:山东,37
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。