CN111104412B - 基于单线程的并发控制方法、装置和*** - Google Patents
基于单线程的并发控制方法、装置和*** Download PDFInfo
- Publication number
- CN111104412B CN111104412B CN201811250291.4A CN201811250291A CN111104412B CN 111104412 B CN111104412 B CN 111104412B CN 201811250291 A CN201811250291 A CN 201811250291A CN 111104412 B CN111104412 B CN 111104412B
- Authority
- CN
- China
- Prior art keywords
- read
- lock module
- write lock
- data block
- current
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Safety Devices In Control Systems (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种基于单线程的并发控制方法、装置和***。其中,该方法包括:检测当前数据块所对应的当前操作;确定当前操作所对应的读写锁模块,其中,读写锁模块用于在分布式***中对当前数据块中的数据进行操作;基于读写锁模块执行当前数据块对应的操作。本申请解决了由于单线程中无法进行加锁导致多个操作在并发执行时出现错误的技术问题。
Description
技术领域
本申请涉及计算机领域,具体而言,涉及一种基于单线程的并发控制方法、装置和***。
背景技术
在现有的数据存储***中,通常将一段连续数据组织成数据块(即chunk)。数据存储***可存储多个数据块,其中,用户可对每个数据库进行创建、读、写、关闭(即不再写)、删除等操作。当多个操作同时执行时,例如,多个读操作同时进行,为保证多个操作的正确执行,数据存储***需要正确处理多个操作之间的执行次序,以保证每个操作的逻辑正确,且尽可能允许更多操作被执行。
而在单线程、全异步的数据存储***中,所有的存储软件逻辑运行在同一个线程中,多个操作无法同时进行。另外,在单线程、全异步的数据存储***中,无法使用多线程、同步程序的数据存储***中的“锁”,并且,存储软件自身必须正确对操作进行并发控制。即基于多线程、同步程序的锁同步机制无法在单线程、全异步的存储软件的场景进行使用,而由于单线程中无法进行加锁,因此,可能导致多个操作并发执行时由于执行逻辑操作而出现异常。
针对上述由于单线程中无法进行加锁导致多个操作在并发执行时出现错误的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种基于单线程的并发控制方法、装置和***,以至少解决由于单线程中无法进行加锁导致多个操作在并发执行时出现错误的技术问题。
根据本发明实施例的一个方面,提供了一种基于单线程的并发控制方法,包括:检测当前数据块所对应的当前操作;确定当前操作所对应的读写锁模块,其中,读写锁模块用于在分布式***中对当前数据块中的数据进行操作;基于读写锁模块执行当前数据块对应的操作。
根据本发明实施例的另一方面,还提供了一种基于单线程的并发控制方法,包括:基于当前数据块所对应的当前操作获取读写锁模块,其中,读写锁模块用于在分布式***中对当前数据块中的数据进行操作;基于读写锁模块执行当前操作;在当前操作执行成功的情况下,释放读写锁模块。
根据本发明实施例的另一方面,还提供了一种基于单线程的并发控制装置,包括:检测模块,用于检测当前数据块所对应的当前操作;确定模块,用于确定当前操作所对应的读写锁模块,其中,读写锁模块用于在分布式***中对当前数据块中的数据进行操作;执行模块,用于基于读写锁模块执行当前数据块对应的操作。
根据本发明实施例的另一方面,还提供了一种基于单线程的并发控制***,包括:存储单元,用于存储至少一个数据块;处理器,用于从存储单元获取当前数据块,并检测当前数据块所对应的当前操作,然后确定与当前操作对应的读写锁模块,并基于读写锁模块执行当前操作,其中,读写锁模块用于在分布式***中对当前数据块中的数据进行操作。
根据本发明实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行基于单线程的并发控制方法。
根据本发明实施例的另一方面,还提供了一种计算机设备,包括处理器,该处理器用于运行程序,其中,程序运行时执行基于单线程的并发控制方法。
在本发明实施例中,采用在单线程中使用多线程中读写锁机制的方式,通过检测当前数据块所对应的当前操作,并确定当前操作所对应的读写锁模块,然后基于读写锁模块执行当前数据块对应的操作,其中,读写锁模块用于在分布式***中对当前数据块中的数据进行操作。
在上述过程中,在执行某个操作前,采用读写锁模块对单线程中的并发操作进行加锁,在该加锁的操作进行执行的过程中,其他操作需等待加锁操作完成之后,才能进行加锁操作,并执行,从而避免了多个操作的逻辑错误导致操作异常,保证了各个操作的正确执行,从而实现了加锁操作在单线程并发控制***中的应用。
由上述内容可知,本申请所提供的方案可以解决由于单线程中无法进行加锁导致多个操作在并发执行时出现错误的技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种用于实现基于单线程的并发控制方法的计算机终端(或移动设备)的硬件结构框图;
图2是根据本申请实施例的一种基于单线程的并发控制方法的流程图;
图3是根据本申请实施例的一种基于单线程的并发控制方法的流程图;
图4是根据本申请实施例的一种基于单线程的并发控制方法的装置结构示意图;以及
图5是根据本申请实施例的一种计算机设备的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
数据块,即chunk,指一组或几组按顺序连续排列在一起的记录,是主存储器与输入设备、输出设备或外存储器之间进行传输的数据单位。
读写锁,即rwlock,指对共享资源进行读操作或写操作的计算机程序,用于保证在进行读操作或写操作时,不允许其他操作访问该共享资源。
并发,指在操作***中,有多个程序都处于启动运行和运行完毕之间,而且多个程序都是在同一处理器上运行,但是任意时刻点只有一个程序在处理器上运行。
实施例1
根据本申请实施例,还提供了一种基于单线程的并发控制方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图1示出了一种用于实现基于单线程的并发控制方法的计算机终端(或移动设备)的硬件结构框图。如图1所示,计算机终端10(或移动设备10)可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器104可用于存储应用软件的软件程序以及模块,如本申请实施例中的基于单线程的并发控制方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述基于单线程的并发控制方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端10(或移动设备)的用户界面进行交互。
此处需要说明的是,在一些可选实施例中,上述图1所示的计算机设备(或移动设备)可以包括硬件元件(包括电路)、软件元件(包括存储在计算机可读介质上的计算机代码)、或硬件元件和软件元件两者的结合。应当指出的是,图1仅为特定具体实例的一个实例,并且旨在示出可存在于上述计算机设备(或移动设备)中的部件的类型。
在上述运行环境下,本申请在已有的多线程并发控制方法中,采用存储软件使用操作***所提供的“读写锁”机制,在各个操作执行前对其进行加锁,数据存储***执行完成后释放锁。例如,对于创建、删除、关闭、写等操作加写锁模块,而对读操作加读锁模块,由于读锁模块和写锁模块之间、多个写锁模块之间相互排斥,而多个读锁模块之间可并发执行。互斥的多个操作在前一个操作释放对应的读锁模块或写锁模块之后,才继续进行加锁操作,并在对应的读写锁模块中执行该操作,进而保证了各个操作的正确执行。
基于上述内容,本实施例提供了如图2所示的基于单线程的并发控制方法,由图2可知,本申请所提供的基于单线程的并发控制方法包括如下步骤:
步骤S202,检测当前数据块所对应的当前操作。
需要说明的是,单线程、全异步的数据存储***可并发执行当前数据块所对应的当前操作。当前数据块所对应的当前操作至少包括如下之一:写操作、读操作、删除操作以及关闭操作,其中,上述四个操作之间的互斥关系如表1所示。
表1
由表1可知,多个读操作之间可并发执行。另外,由于数据块的写操作具有预设的执行顺序,因此,写操作不会覆盖同一个位置,因此,可通过检查数据块的长度来保证读操作对应的数据是已经被写操作写入的,即读操作与写操作可并发执行。
此外,还需要说明的是,当存在允许多个已发起但未完成的写操作时,数据存储***中的乱序控制模块可保证多个写操作之间的执行顺序,即多个写操作之间可并发执行。其中,数据存储***中的乱序控制模块可将多个写操作按照不规则的顺序发送给数据存储***中的执行单元,使执行单元执行写操作。
在一种可选的方案中,数据存储***中具有检测单元,该检测单元可检测到用户对当前数据块的操作。例如,用户对当前数据块进行写操作时,数据存储***可接收用户输入的写指令,数据存储***中的检测单元检测到数据存储***接收到了写指令,则确定当前数据块所对应的当前操作为写操作。对于删除操作、读操作以及关闭操作的检测过程与写操作的检测过程相同,在此不再赘述。
步骤S204,确定当前操作所对应的读写锁模块,其中,读写锁模块用于在分布式***中对当前数据块中的数据进行操作。
需要说明的是,在步骤S204中,每个数据块与一个读写锁模块相对应,其中,读写锁模块包括读锁模块、至多一个写锁模块以及待执行列表,待执行列表中存储有待执行的操作。即数据存储***在单线程中,可以存在多个读锁模块,但最多只存在一个写锁模块。另外,读操作和写操作对应的读写锁模块为读锁模块,删除操作和关闭操作对应的读写锁模块为写锁模块。
可选的,在确定了当前操作之后,数据存储***根据当前操作确定对应的读写锁模块,例如,在检测单元检测到当前操作为读操作的情况下,数据存储***确定读写锁模块为读锁模块;在检测单元检测当前操作为删除操作的情况下,数据存储***确定读写锁模块为写锁模块。
此外,还需要说明的是,写锁模块的优先级高于读锁模块的优先级,例如,当用户使用写锁模块进行删除操作,或者,用户将使用写锁模块进行删除操作时,用户无法再使用读锁模块进行读操作或写操作。
步骤S206,基于读写锁模块执行当前数据块对应的操作。
需要说明的是,在确定了当前操作对应的读写锁模块之后,基于读写锁模块执行当前操作,例如,在对数据块进行读操作和写操作的并发执行的场景中,读操作和写操作均可使用读锁模块进行运行,读操作和写操作可并发执行。
基于上述步骤S202至步骤S206所限定的方案,可以获知,采用在单线程中使用多线程中读写锁机制的方式,通过检测当前数据块所对应的当前操作,并确定当前操作所对应的读写锁模块,然后基于读写锁模块执行当前数据块对应的操作,其中,读写锁模块用于在分布式***中对当前数据块中的数据进行操作。
容易注意到的是,在执行某个操作前,采用读写锁模块对单线程中的并发操作进行加锁,在该加锁的操作进行执行的过程中,其他操作需等待加锁操作完成之后,才能进行加锁操作,并执行,从而避免了多个操作的逻辑错误导致操作异常,保证了各个操作的正确执行,从而实现了加锁操作在单线程并发控制***中的应用。
由上述内容可知,本申请所提供的方案可以解决由于单线程中无法进行加锁导致多个操作在并发执行时出现错误的技术问题。
需要说明的是,在检测当前数据块所对应的当前操作之后,数据存储***需要确定数据块与读写锁模块之间的映射关系,其中,数据块与读写锁模块之间的映射关系可以为如下任意一种:
方式一:一一映射关系。其中,数据存储***获取当前数据块所对应的标识信息,并创建与当前操作对应的读写锁模块,然后根据标识信息创建读写锁模块与当前数据块之间的映射关系。
可选的,用户在对当前数据块进行操作(例如,写操作)时,数据存储***获取当前数据块的标识信息ChunkID,并创建读写锁模块,得到读写锁模块的标识信息RWLock,然后建立ChunkID与RWLock之间的映射关系,并存储该映射关系。其中,当前数据块与读写锁之间的映射关系可以存放在预设的存储区域(例如,本地的数据库、数据列表等)中。另外,当数据存储***检测到预设的存储区域中存在未***作的数据块所对应的读写锁模块时,该数据块所对应的读写锁模块为无效模块,例如,该数据块所对应的读写锁模块已经被使用,此时,为节省预设的存储区域的内存,数据存储***对该数据块所对应的读写锁模块的标识信息进行清理。
方式二:哈希映射关系。其中,数据存储***获取当前数据块所对应的标识信息,并创建与当前操作对应的读写锁模块,然后,根据标识信息计算得到当前数据块所对应的哈希值,最后根据哈希值创建读写锁模块与当前数据块之间的映射关系。
可选的,用户在对当前数据块进行操作(例如,写操作)时,数据存储***获取当前数据块的标识信息ChunkID,并创建读写锁模块,得到读写锁模块的标识信息RWLock,然后计算当前数据块的标识信息ChunkID的哈希值,并将该哈希值与读写锁模块的标识信息RWLock进行映射关系,并存储该映射关系。其中,当前数据块与读写锁之间的映射关系可以存放在预设的存储区域(例如,本地的数据库、数据列表等)中。另外,当数据存储***检测到预设的存储区域中存在未***作的数据块所对应的读写锁模块时,该数据块所对应的读写锁模块为无效模块,例如,该数据块所对应的读写锁模块已经被使用,此时,为节省预设的存储区域的内存,数据存储***对该数据块所对应的读写锁模块的标识信息进行清理。
需要说明的是,在得到了数据块与读写锁模块之间的映射关系之后,数据存储***确定当前操作所对应的读写锁模块,具体过程可以包括如下步骤:
步骤S2040,获取当前数据块所对应的标识信息;
步骤S2042,根据映射关系以及标识信息确定当前操作对应的读写锁模块。
可选的,在检测到用户对当前数据块进行操作时,数据存储***获取当前数据块所对应的标识信息,数据存储***在预设的存储区域中根据映射关系确定当前数据块对应的标识信息所对应的读写锁模块的标识信息,进而根据读写锁模块的标识信息确定当前操作所对应的读写锁模块。
需要说明的是,在确定当前操作对应的读写锁模块之后,数据存储***检测读写锁模块的状态,并在读写锁模块的状态为空闲状态的情况下,执行当前数据块对应的操作。其中,读写锁模块的状态包括空闲状态和忙碌状态。可选的,在检测到存在正在执行的操作,和/或,待执行列表中存在待执行的操作的情况下,确定读写锁模块的状态为忙碌状态。
在一种可选的方案中,当检测到当前操作为写操作,或者,在待执行列表中存在待执行的写操作时,数据存储***确定读写锁模块的状态为忙碌状态。例如,数据存储***可执行以下程序逻辑:
if(rwlock.TryReadLock())
{
//执行对应的操作
}
else
{
//直接返回操作忙碌或者读写锁模块冲突
}
需要说明的是,在上述程序逻辑中,TryReadLock()函数为布尔型的函数,读写锁模块的状态为忙碌状态,TryReadLock()函数返回false,表明此时读写锁模块忙碌或者读写锁模块发生了冲突;读写锁模块的状态为空闲状态时,TryReadLock()函数返回true。
在另一种可选的方案中,在基于读写锁模块执行当前数据块对应的操作之后,数据存储***还检测当前数据块对应的操作的执行状态,并在执行状态指示执行完毕的情况下,释放读写锁模块。例如,在当前数据块对应的操作完成后,数据存储***可采用ReleaseReadLock()函数释放读锁模块,或采用ReleaseWriteLock()函数释放写锁模块。可选的,如果当前操作对应待执行列表中的最后一个读锁模块,并且,待执行列表中还存在写锁模块,则在当前操作完成后,数据存储***采用ReleaseReadLock()函数释放读锁模块,并触发执行写锁模块所对应的操作。
进一步地,数据存储***还可通过HasWriterOrWaiter()函数来检测写锁模块对应的写操作是否正在执行,或者,待执行列表中下一个待执行的操作是否为写操作。如果HasWriterOrWaiter()函数的返回结果为true,则表明当前存在其他操作在等待写锁模块,或者,有其他用户正在使用写锁模块,此时,数据存储***向用户返回“稍后重新操作”的提示信息,用户可稍后再执行上述操作。如果HasWriterOrWaiter()函数的返回结果为false,则数据存储***可通过构造任务task,并采用RunWithWriteLock(Closure*task)函数执行写锁模块对应的操作。
需要说明的是,在构造任务task的过程中,在任务task的异步流程完成后,数据存储***显示调用ReleaseWriteLock()函数,释放写锁模块。基于上述内容,数据存储***的程序逻辑如下:
if(rwlock.HasWriterOrWaiter())
{
//如果返回true,则返回“稍后重新操作”的提示信息
}
else
{
//如果返回false,则构造一个任务task,并采用rwlock.RunWithWriteLock(task)执行任务,在任务完成后,调用rwlock.ReleaseWriteLock()函数释放写锁模块
}
在一种场景中,本申请所提供的基于单线程的并发控制方法还可适用于删除操作与读操作/写操作的互斥场景。可选的,数据存储***检测到用户需对数据块进行删除操作,此时,如果数据存储***检测到当前还存在未完成的写操作或读操作,则数据存储***将删除操作存储在待执行列表中,并在未完成的写操作或读操作完成之后,再出发删除操作,此时,数据存储***可安全的删除数据块和/或数据块中相关的数据结构。另外,在进行删除操作的过程中,读操作或写操作无法获取读锁模块,此时,数据存储***向用户返回“稍后重新操作”的提示信息,无法访问到正在被删除的数据块以及数据块中的数据。在删除操作完成后,读操作或写操作才可以获取到读锁模块,此时,读操作或写操作无法对删除操作已经删除的数据块进行操作。
需要说明的是,本申请所提供的基于单线程的并发控制方法还可采用协程的方式来开发存储软件,协程可以在单个物理线程中模拟出多个执行流程,通过依赖协程提供的锁机制来实现并发控制。其中,单线程下的并发、又称微线程,是一种用户态轻级线程,即协程可由用户程序自己控制调度的。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的基于单线程的并发控制方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
实施例2
根据本申请实施例,还提供了一种基于单线程的并发控制方法,如图3所示,该方法包括如下步骤:
步骤S302,基于当前数据块所对应的当前操作获取读写锁模块,其中,读写锁模块用于在分布式***中对当前数据块中的数据进行操作。
需要说明的是,单线程、全异步的数据存储***可并发执行当前数据块所对应的当前操作。当前数据块所对应的当前操作至少包括如下之一:写操作、读操作、删除操作以及关闭操作。
此外,还需要说明的是,每个数据块与一个读写锁模块相对应,其中,读写锁模块包括读锁模块、至多一个写锁模块以及待执行列表,待执行列表中存储有待执行的操作。即数据存储***在单线程中,可以存在多个读锁模块,但最多只存在一个写锁模块。另外,读操作和写操作对应的读写锁模块为读锁模块,删除操作和关闭操作对应的读写锁模块为写锁模块。另外,写锁模块的优先级高于读锁模块的优先级,例如,当用户使用写锁模块进行删除操作,或者,用户将使用写锁模块进行删除操作时,用户无法再使用读锁模块进行读操作或写操作。
在一种可选的方案中,数据存储***中具有检测单元,该检测单元可检测到用户对当前数据块的操作。例如,用户对当前数据块进行写操作时,数据存储***可接收用户输入的写指令,数据存储***中的检测单元检测到数据存储***接收到了写指令,则确定当前数据块所对应的当前操作为写操作。在确定了当前操作之后,数据存储***根据当前操作确定对应的读写锁模块,例如,在检测单元检测到当前操作为写操作的情况下,数据存储***确定读写锁模块为读锁模块;在检测单元检测当前操作为删除操作的情况下,数据存储***确定读写锁模块为写锁模块。
步骤S304,基于读写锁模块执行当前操作。
需要说明的是,在确定了当前操作对应的读写锁模块之后,基于读写锁模块执行当前操作,例如,在对数据块进行读操作和写操作的并发执行的场景中,读操作和写操作均可使用读锁模块进行运行,读操作和写操作可并发执行。
步骤S306,在当前操作执行成功的情况下,释放读写锁模块。
在一种可选的方案中,在基于读写锁模块执行当前数据块对应的操作之后,数据存储***还检测当前数据块对应的操作的执行状态,并在执行状态指示执行完毕的情况下,释放读写锁模块。例如,在当前数据块对应的操作完成后,数据存储***可采用ReleaseReadLock()函数释放读锁模块,或采用ReleaseWriteLock()函数释放写锁模块。
基于上述步骤S302至步骤S306所限定的方案,可以获知,采用在单线程中使用多线程中读写锁机制的方式,数据存储***基于当前数据块所对应的当前操作获取读写锁模块,然后基于读写锁模块执行当前操作,并在当前操作执行成功的情况下,释放读写锁模块。
容易注意到的是,在执行某个操作前,采用读写锁模块对单线程中的并发操作进行加锁,在该加锁的操作进行执行的过程中,其他操作需等待加锁操作完成之后,才能进行加锁操作,并执行,从而避免了多个操作的逻辑错误导致操作异常,保证了各个操作的正确执行,从而实现了加锁操作在单线程并发控制***中的应用。
由上述内容可知,本申请所提供的方案可以解决由于单线程中无法进行加锁导致多个操作在并发执行时出现错误的技术问题。
需要说明的是,在检测当前数据块所对应的当前操作之后,数据存储***需要确定数据块与读写锁模块之间的映射关系,其中,数据块与读写锁模块之间的映射关系可以为如下任意一种:
方式一:一一映射关系。其中,数据存储***获取当前数据块所对应的标识信息,并创建与当前操作对应的读写锁模块,然后根据标识信息创建读写锁模块与当前数据块之间的映射关系。
方式二:哈希映射关系。其中,数据存储***获取当前数据块所对应的标识信息,并创建与当前操作对应的读写锁模块,然后,根据标识信息计算得到当前数据块所对应的哈希值,最后根据哈希值创建读写锁模块与当前数据块之间的映射关系。
进一步地,在得到了数据块与读写锁模块之间的映射关系之后,数据存储***获取当前数据块所对应的标识信息,并根据映射关系以及标识信息确定当前操作对应的读写锁模块。
需要说明的是,在确定当前操作对应的读写锁模块之后,数据存储***检测读写锁模块的状态,并在读写锁模块的状态为空闲状态的情况下,执行当前数据块对应的操作。其中,读写锁模块的状态包括空闲状态和忙碌状态。可选的,在检测到存在正在执行的操作,和/或,待执行列表中存在待执行的操作的情况下,确定读写锁模块的状态为忙碌状态。
实施例3
根据本申请实施例,还提供了一种用于实施上述基于单线程的并发控制方法的基于单线程的并发控制装置,如图4所示,该装置40包括:检测模块401、确定模块403以及执行模块405。
其中,检测模块401,用于检测当前数据块所对应的当前操作;确定模块403,用于确定当前操作所对应的读写锁模块,其中,读写锁模块用于在分布式***中对当前数据块中的数据进行操作;执行模块405,用于基于读写锁模块执行当前数据块对应的操作。
此处,还需要说明的是,上述检测模块401、确定模块403以及执行模块405对应于实施例1中的步骤S202至步骤S206,三个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端10中。
需要说明的是,当前数据块所对应的当前操作至少包括如下之一:写操作、读操作、删除操作以及关闭操作。读写锁模块包括读锁模块、至多一个写锁模块以及待执行列表,其中,待执行列表中存储有待执行的操作,每个数据块与一个读写锁模块相对应。
此外,还需要说明的是,写锁模块的优先级高于读锁模块的优先级,读操作和写操作对应的读写锁模块为读锁模块,删除操作和关闭操作对应的读写锁模块为写锁模块。
在一种可选的方案中,基于单线程的并发控制装置还包括:第一获取模块、第一创建模块以及第二创建模块。其中,第一获取模块,用于获取当前数据块所对应的标识信息;第一创建模块,用于与当前操作对应的读写锁模块;第二创建模块,用于根据标识信息创建读写锁模块与当前数据块之间的映射关系。
在一种可选的方案中,基于单线程的并发控制装置还包括:第二获取模块、第三创建模块、计算模块以及第四创建模块。其中,第二获取模块,用于获取当前数据块所对应的标识信息;第三创建模块,用于创建与当前操作对应的读写锁模块;计算模块,用于根据标识信息计算得到当前数据块所对应的哈希值;第四创建模块,用于根据哈希值创建读写锁模块与当前数据块之间的映射关系。
在一种可选的方案中,确定模块包括:第三获取模块以及第一确定模块。其中,第三获取模块,用于获取当前数据块所对应的标识信息;第一确定模块,用于根据映射关系以及标识信息确定当前操作对应的读写锁模块。
此处,还需要说明的是,上述三获取模块以及第一确定模块对应于实施例1中的步骤S2040至步骤S2042,两个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端10中。
在一种可选的方案中,执行模块包括:第一检测模块以及执行模块。其中,第一检测模块,用于检测读写锁模块的状态;执行模块,用于在读写锁模块的状态为空闲状态的情况下,执行当前数据块对应的操作。
在一种可选的方案中,第一检测模块包括:第二确定模块。其中,第二确定模块,用于在检测到存在正在执行的操作,和/或,待执行列表中存在待执行的操作的情况下,确定读写锁模块的状态为忙碌状态。
在一种可选的方案中,基于单线程的并发控制装置还包括:第二检测模块以及释放模块。其中,第二检测模块,用于检测当前数据块对应的操作的执行状态;释放模块,用于在执行状态指示执行完毕的情况下,释放读写锁模块。
实施例4
根据本申请实施例,还提供了一种用于实施上述基于单线程的并发控制方法的基于单线程的并发控制***,该***包括:存储单元和处理器。
其中,存储单元,用于存储至少一个数据块;处理器,用于从存储单元获取当前数据块,并检测当前数据块所对应的当前操作,然后确定与当前操作对应的读写锁模块,并基于读写锁模块执行当前操作,其中,读写锁模块用于在分布式***中对当前数据块中的数据进行操作。
需要说明的是,当前数据块所对应的当前操作至少包括如下之一:写操作、读操作、删除操作以及关闭操作。读写锁模块包括读锁模块、至多一个写锁模块以及待执行列表,其中,待执行列表中存储有待执行的操作,每个数据块与一个读写锁模块相对应。
此外,还需要说明的是,读写锁模块包括读锁模块、至多一个写锁模块以及待执行列表,其中,待执行列表中存储有待执行的操作,每个数据块与一个读写锁模块相对应。
由上可知,采用在单线程中使用多线程中读写锁机制的方式,通过检测当前数据块所对应的当前操作,并确定当前操作所对应的读写锁模块,然后基于读写锁模块执行当前数据块对应的操作,其中,读写锁模块用于在分布式***中对当前数据块中的数据进行操作。
容易注意到的是,在执行某个操作前,采用读写锁模块对单线程中的并发操作进行加锁,在该加锁的操作进行执行的过程中,其他操作需等待加锁操作完成之后,才能进行加锁操作,并执行,从而避免了多个操作的逻辑错误导致操作异常,保证了各个操作的正确执行,从而实现了加锁操作在单线程并发控制***中的应用。
由上述内容可知,本申请所提供的方案可以解决由于单线程中无法进行加锁导致多个操作在并发执行时出现错误的技术问题。
需要说明的是,在检测当前数据块所对应的当前操作之后,处理器需要确定数据块与读写锁模块之间的映射关系,其中,数据块与读写锁模块之间的映射关系可以为如下任意一种:
方式一:一一映射关系。其中,处理器获取当前数据块所对应的标识信息,并创建与当前操作对应的读写锁模块,然后根据标识信息创建读写锁模块与当前数据块之间的映射关系。
方式二:哈希映射关系。其中,处理器获取当前数据块所对应的标识信息,并创建与当前操作对应的读写锁模块,然后,根据标识信息计算得到当前数据块所对应的哈希值,最后根据哈希值创建读写锁模块与当前数据块之间的映射关系。
在一种可选的方案中,在得到了数据块与读写锁模块之间的映射关系之后,处理器获取当前数据块所对应的标识信息,并根据映射关系以及标识信息确定当前操作对应的读写锁模块。
进一步地,在确定当前操作对应的读写锁模块之后,处理器检测读写锁模块的状态,并在读写锁模块的状态为空闲状态的情况下,执行当前数据块对应的操作。其中,读写锁模块的状态包括空闲状态和忙碌状态。可选的,在检测到存在正在执行的操作,和/或,待执行列表中存在待执行的操作的情况下,确定读写锁模块的状态为忙碌状态。
最后,在基于读写锁模块执行当前数据块对应的操作之后,处理器还检测当前数据块对应的操作的执行状态,并在执行状态指示执行完毕的情况下,释放读写锁模块。
实施例5
本申请的实施例可以提供一种计算机设备,该计算机设备可以是计算机终端群中的任意一个计算机终端设备。可选地,在本实施例中,上述计算机设备也可以替换为移动终端等终端设备。
可选地,在本实施例中,上述计算机设备可以位于计算机网络的多个网络设备中的至少一个网络设备。
在本实施例中,上述计算机设备可以执行基于单线程的并发控制方法中以下步骤的程序代码:检测当前数据块所对应的当前操作;确定当前操作所对应的读写锁模块,其中,读写锁模块用于在分布式***中对当前数据块中的数据进行操作;基于读写锁模块执行当前数据块对应的操作。
可选地,图5是根据本申请实施例的一种计算机设备的结构框图。如图5所示,该计算机设备A可以包括:一个或多个(图5中仅示出一个)处理器502、存储器504以及传输装置506。
其中,存储器可用于存储软件程序以及模块,如本申请实施例中的基于单线程的并发控制方法和装置对应的程序指令/模块,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的基于单线程的并发控制方法。存储器可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至设备A。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:检测当前数据块所对应的当前操作;确定当前操作所对应的读写锁模块,其中,读写锁模块用于在分布式***中对当前数据块中的数据进行操作;基于读写锁模块执行当前数据块对应的操作。
可选的,上述处理器还可以执行如下步骤的程序代码:获取当前数据块所对应的标识信息;创建与当前操作对应的读写锁模块;根据标识信息创建读写锁模块与当前数据块之间的映射关系。
可选的,上述处理器还可以执行如下步骤的程序代码:获取当前数据块所对应的标识信息;创建与当前操作对应的读写锁模块;根据标识信息计算得到当前数据块所对应的哈希值;根据哈希值创建读写锁模块与当前数据块之间的映射关系。
可选的,上述处理器还可以执行如下步骤的程序代码:获取当前数据块所对应的标识信息;根据映射关系以及标识信息确定当前操作对应的读写锁模块。
可选的,上述处理器还可以执行如下步骤的程序代码:检测读写锁模块的状态;在读写锁模块的状态为空闲状态的情况下,执行当前数据块对应的操作。
可选的,上述处理器还可以执行如下步骤的程序代码:在检测到存在正在执行的操作,和/或,待执行列表中存在待执行的操作的情况下,确定读写锁模块的状态为忙碌状态。
可选的,上述处理器还可以执行如下步骤的程序代码:检测当前数据块对应的操作的执行状态;在执行状态指示执行完毕的情况下,释放读写锁模块。
可选的,上述处理器还可以执行如下步骤的程序代码:基于当前数据块所对应的当前操作获取读写锁模块,其中,读写锁模块用于在分布式***中对当前数据块中的数据进行操作;基于读写锁模块执行当前操作;在当前操作执行成功的情况下,释放读写锁模块。
本领域普通技术人员可以理解,图5所示的结构仅为示意,计算机设备也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌声电脑以及移动互联网设备(MobileInternet Devices,MID)、PAD等终端设备。图5其并不对上述电子装置的结构造成限定。例如,计算机设备A还可包括比图5中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图5所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
实施例6
本申请的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例所提供的基于单线程的并发控制方法所执行的程序代码。
可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:检测当前数据块所对应的当前操作;确定当前操作所对应的读写锁模块,其中,读写锁模块用于在分布式***中对当前数据块中的数据进行操作;基于读写锁模块执行当前数据块对应的操作。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:获取当前数据块所对应的标识信息;创建与当前操作对应的读写锁模块;根据标识信息创建读写锁模块与当前数据块之间的映射关系。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:获取当前数据块所对应的标识信息;创建与当前操作对应的读写锁模块;根据标识信息计算得到当前数据块所对应的哈希值;根据哈希值创建读写锁模块与当前数据块之间的映射关系。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:获取当前数据块所对应的标识信息;根据映射关系以及标识信息确定当前操作对应的读写锁模块。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:检测读写锁模块的状态;在读写锁模块的状态为空闲状态的情况下,执行当前数据块对应的操作。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在检测到存在正在执行的操作,和/或,待执行列表中存在待执行的操作的情况下,确定读写锁模块的状态为忙碌状态。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:检测当前数据块对应的操作的执行状态;在执行状态指示执行完毕的情况下,释放读写锁模块。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:基于当前数据块所对应的当前操作获取读写锁模块,其中,读写锁模块用于在分布式***中对当前数据块中的数据进行操作;基于读写锁模块执行当前操作;在当前操作执行成功的情况下,释放读写锁模块。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (13)
1.一种基于单线程的并发控制方法,其特征在于,包括:
检测当前数据块所对应的当前操作;
确定所述当前操作所对应的读写锁模块,其中,所述读写锁模块用于在分布式***中对所述当前数据块中的数据进行操作;
基于所述读写锁模块执行所述当前数据块对应的操作;
在所述检测当前数据块所对应的当前操作之后,还包括:获取所述当前数据块所对应的标识信息;创建与所述当前操作对应的读写锁模块,得到读写锁模块的标识信息;根据所述当前数据块所对应的标识信息和所述当前操作对应的读写锁模块的标识信息创建与所述当前操作对应的读写锁模块与所述当前数据块之间的映射关系;
所述确定所述当前操作所对应的读写锁模块包括:根据所述映射关系、所述当前数据块所对应的标识信息以及所述当前操作对应的读写锁模块的标识信息确定所述当前操作对应的读写锁模块。
2.根据权利要求1所述的方法,其特征在于,所述当前数据块所对应的当前操作至少包括如下之一:写操作、读操作、删除操作以及关闭操作。
3.根据权利要求2所述的方法,其特征在于,所述读写锁模块包括读锁模块、至多一个写锁模块以及待执行列表,其中,所述待执行列表中存储有待执行的操作,每个数据块与一个读写锁模块相对应。
4.根据权利要求3所述的方法,其特征在于,所述写锁模块的优先级高于所述读锁模块的优先级,所述读操作和所述写操作对应的读写锁模块为所述读锁模块,所述删除操作和所述关闭操作对应的读写锁模块为所述写锁模块。
5.根据权利要求1所述的方法,其特征在于,所述根据所述当前数据块所对应的标识信息和所述当前操作对应的读写锁模块的标识信息创建与所述当前操作对应的读写锁模块与所述当前数据块之间的映射关系包括:
根据所述当前数据块所对应的标识信息计算得到所述当前数据块所对应的哈希值;
根据所述哈希值创建与所述当前操作对应的读写锁模块与所述当前数据块之间的映射关系。
6.根据权利要求3所述的方法,其特征在于,基于所述读写锁模块执行所述当前数据块对应的操作,包括:
检测所述读写锁模块的状态;
在所述读写锁模块的状态为空闲状态的情况下,执行所述当前数据块对应的操作。
7.根据权利要求6所述的方法,其特征在于,检测所述读写锁模块的状态,包括:
在检测到存在正在执行的操作,和/或,所述待执行列表中存在所述待执行的操作的情况下,确定所述读写锁模块的状态为忙碌状态。
8.根据权利要求1所述的方法,其特征在于,在基于所述读写锁模块执行所述当前数据块对应的操作之后,所述方法还包括:
检测所述当前数据块对应的操作的执行状态;
在所述执行状态指示执行完毕的情况下,释放所述读写锁模块。
9.一种基于单线程的并发控制方法,其特征在于,包括:
基于当前数据块所对应的当前操作获取读写锁模块,其中,所述读写锁模块用于在分布式***中对所述当前数据块中的数据进行操作;
基于所述读写锁模块执行所述当前操作;
在所述当前操作执行成功的情况下,释放所述读写锁模块;
所述基于当前数据块所对应的当前操作获取读写锁模块包括:获取所述当前数据块所对应的标识信息;创建与所述当前操作对应的读写锁模块,得到读写锁模块的标识信息;根据所述当前数据块所对应的标识信息和所述当前操作对应的读写锁模块的标识信息创建与所述当前操作对应的读写锁模块与所述当前数据块之间的映射关系;根据所述映射关系、所述当前数据块所对应的标识信息以及所述当前操作对应的读写锁模块的标识信息确定所述当前操作对应的读写锁模块。
10.一种基于单线程的并发控制装置,其特征在于,包括:
检测模块,用于检测当前数据块所对应的当前操作;
确定模块,用于确定所述当前操作所对应的读写锁模块,其中,所述读写锁模块用于在分布式***中对所述当前数据块中的数据进行操作;
执行模块,用于基于所述读写锁模块执行所述当前数据块对应的操作;
还包括:第一获取模块,用于获取当前数据块所对应的标识信息;第一创建模块,用于创建与所述当前操作对应的读写锁模块,得到读写锁模块的标识信息;第二创建模块,用于根据所述当前数据块所对应的标识信息和所述当前操作对应的读写锁模块的标识信息创建与所述当前操作对应的读写锁模块与所述当前数据块之间的映射关系;第一确定模块,用于根据所述映射关系、所述当前数据块所对应的标识信息以及所述当前操作对应的读写锁模块的标识信息确定所述当前操作对应的读写锁模块。
11.一种基于单线程的并发控制***,其特征在于,包括:
存储单元,用于存储至少一个数据块;
处理器,用于从所述存储单元获取当前数据块,并检测所述当前数据块所对应的当前操作,然后确定与所述当前操作对应的读写锁模块,并基于所述读写锁模块执行所述当前操作,其中,所述读写锁模块用于在分布式***中对所述当前数据块中的数据进行操作;
在所述检测当前数据块所对应的当前操作之后,还包括:获取所述当前数据块所对应的标识信息;创建与所述当前操作对应的读写锁模块,得到读写锁模块的标识信息;根据所述当前数据块所对应的标识信息和所述当前操作对应的读写锁模块的标识信息创建与所述当前操作对应的读写锁模块与所述当前数据块之间的映射关系;
所述确定所述当前操作所对应的读写锁模块包括:根据所述映射关系、所述当前数据块所对应的标识信息以及所述当前操作对应的读写锁模块的标识信息确定所述当前操作对应的读写锁模块。
12.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至9中任意一项所述的基于单线程的并发控制方法。
13.一种计算机设备,包括处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至9中任意一项所述的基于单线程的并发控制方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811250291.4A CN111104412B (zh) | 2018-10-25 | 2018-10-25 | 基于单线程的并发控制方法、装置和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811250291.4A CN111104412B (zh) | 2018-10-25 | 2018-10-25 | 基于单线程的并发控制方法、装置和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111104412A CN111104412A (zh) | 2020-05-05 |
CN111104412B true CN111104412B (zh) | 2023-05-30 |
Family
ID=70418041
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811250291.4A Active CN111104412B (zh) | 2018-10-25 | 2018-10-25 | 基于单线程的并发控制方法、装置和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111104412B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1713152A (zh) * | 2004-06-25 | 2005-12-28 | 国际商业机器公司 | 在协议层之间的共享锁机制 |
CN102394867A (zh) * | 2011-10-10 | 2012-03-28 | 深圳市金槌拍卖行有限公司 | 网络并发通讯请求转串行队列技术 |
CN104834558A (zh) * | 2015-05-19 | 2015-08-12 | 北京京东尚科信息技术有限公司 | 一种数据处理的方法及*** |
CN105224251A (zh) * | 2015-09-28 | 2016-01-06 | 浪潮(北京)电子信息产业有限公司 | 一种基于Linux的读写锁优化方法和*** |
CN105589657A (zh) * | 2014-10-23 | 2016-05-18 | 中兴通讯股份有限公司 | 一种实现移动存储挂载的方法及装置 |
CN107632794A (zh) * | 2017-10-20 | 2018-01-26 | 北京小米移动软件有限公司 | 读写锁控制方法及装置 |
CN107807858A (zh) * | 2017-10-30 | 2018-03-16 | 北京神州绿盟信息安全科技股份有限公司 | 一种读写锁操作方法及***、设备 |
CN108572876A (zh) * | 2018-03-07 | 2018-09-25 | 北京神州绿盟信息安全科技股份有限公司 | 一种读写锁的实现方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8239872B2 (en) * | 2008-12-11 | 2012-08-07 | Hewlett-Packard Development Company, L.P. | Method and system for controlling distribution of work items to threads in a server |
US8539168B2 (en) * | 2009-06-26 | 2013-09-17 | Oracle America, Inc. | Concurrency control using slotted read-write locks |
US8826249B2 (en) * | 2010-02-18 | 2014-09-02 | Oracle International Corporation | Method and system for optimizing code for a multi-threaded application |
US10565024B2 (en) * | 2016-10-19 | 2020-02-18 | Oracle International Corporation | Generic concurrency restriction |
US11023234B2 (en) * | 2017-04-12 | 2021-06-01 | Oracle International Corporation | Method and system for restructuring of collections for synchronization |
-
2018
- 2018-10-25 CN CN201811250291.4A patent/CN111104412B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1713152A (zh) * | 2004-06-25 | 2005-12-28 | 国际商业机器公司 | 在协议层之间的共享锁机制 |
CN102394867A (zh) * | 2011-10-10 | 2012-03-28 | 深圳市金槌拍卖行有限公司 | 网络并发通讯请求转串行队列技术 |
CN105589657A (zh) * | 2014-10-23 | 2016-05-18 | 中兴通讯股份有限公司 | 一种实现移动存储挂载的方法及装置 |
CN104834558A (zh) * | 2015-05-19 | 2015-08-12 | 北京京东尚科信息技术有限公司 | 一种数据处理的方法及*** |
CN105224251A (zh) * | 2015-09-28 | 2016-01-06 | 浪潮(北京)电子信息产业有限公司 | 一种基于Linux的读写锁优化方法和*** |
CN107632794A (zh) * | 2017-10-20 | 2018-01-26 | 北京小米移动软件有限公司 | 读写锁控制方法及装置 |
CN107807858A (zh) * | 2017-10-30 | 2018-03-16 | 北京神州绿盟信息安全科技股份有限公司 | 一种读写锁操作方法及***、设备 |
CN108572876A (zh) * | 2018-03-07 | 2018-09-25 | 北京神州绿盟信息安全科技股份有限公司 | 一种读写锁的实现方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111104412A (zh) | 2020-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103842968B (zh) | 一种内存数据的迁移方法、计算机和装置 | |
EP2375323A1 (en) | Firmware image update and management | |
CN103827834B (zh) | 一种内存数据的迁移方法、计算机和装置 | |
US20120151231A1 (en) | Power supply switching device, a power supply switching device control method and a power supply control program | |
WO2021072880A1 (zh) | 虚拟机内部快照异步创建方法、装置、***及存储介质 | |
CN111414374B (zh) | 一种区块链交易并发处理方法、装置及设备 | |
CN105074656A (zh) | 管理并发谓词表达式的方法和装置 | |
CN109324959B (zh) | 一种自动转移数据的方法、服务器及计算机可读存储介质 | |
CN113541741A (zh) | 模拟卡切换方法、装置、电子设备及存储介质 | |
CN108121774A (zh) | 一种数据表备份方法及终端设备 | |
WO2015117356A1 (zh) | 一种开机方法及通信终端 | |
CN111104412B (zh) | 基于单线程的并发控制方法、装置和*** | |
CN110908644B (zh) | 状态节点的配置方法、装置、计算机设备和存储介质 | |
US20170308418A1 (en) | Information processing device, information processing program, and information processing method | |
CN110083493A (zh) | 一种嵌入式***故障自恢复方法、终端设备及存储介质 | |
CN109117406B (zh) | 一种pcie热拔插测试方法、装置、终端及存储介质 | |
CN105353980B (zh) | 一种内存数据的迁移方法、计算机和装置 | |
CN114253781B (zh) | 测试方法、装置、设备及存储介质 | |
CN108829541A (zh) | 扩容检测方法、电子装置及计算机可读存储介质 | |
CN110704198A (zh) | 数据操作方法、装置、存储介质以及处理器 | |
CN111131707B (zh) | 一种基于树莓派的拍照方法及装置 | |
CN112817796A (zh) | 板卡设置方法、板卡复位方法、装置、设备和存储介质 | |
CN109491947A (zh) | 一种pcie外接卡热移除信息的发送方法及相关装置 | |
CN103677938A (zh) | 一种紧急下载方法及其装置 | |
US20240143474A1 (en) | System and method for dynamic sensors support in ipmi stack |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |