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 non release state of the shared memory node in the circular queue, the CAS instruction is invoked during the focus threads of at least two first threads into the shared storage node in the current data; when the current data is stored, the non release state is modified to the publish state and the release state is used to indicate the second thread. Can read the current data; allocate the shared memory node in the publishing state for the second thread; update the original cursor with a single vector based on the storage location of the shared storage node in the circular queue and the consistency of the CAS instruction cursor, so that the focus thread locks the shared memory node. 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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。