CN107291371A - 一种读写锁的实现方法及装置 - Google Patents
一种读写锁的实现方法及装置 Download PDFInfo
- Publication number
- CN107291371A CN107291371A CN201610201019.1A CN201610201019A CN107291371A CN 107291371 A CN107291371 A CN 107291371A CN 201610201019 A CN201610201019 A CN 201610201019A CN 107291371 A CN107291371 A CN 107291371A
- Authority
- CN
- China
- Prior art keywords
- lock
- read
- write
- privately owned
- reading
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0637—Permissions
Abstract
本发明实施例公开了一种读写锁的实现方法及装置。本发明实施例中的一套读写锁包括一个写公共锁和与写公共锁对应的N个读私有锁,确定写公共锁放锁后,若存在写锁申请,则将写公共锁设置为加锁状态,并在确定各读私有锁均处于放锁状态后,将写公共锁分配给写优先级最高的写锁申请;若不存在写锁申请,则为读锁申请分配对应的读私有锁。本发明实施例中读锁申请分别有相对应的读私有锁,从而使得各个读锁申请之间实现并发,并能够避免现有技术中多个读者频繁操作同一共享内存导致读写锁性能严重下降的问题;且,通过将写公共锁设置为加锁状态,从而使得读等待队列中的读锁申请对应的读者均无法获取到读私有锁,使得读者之间相互公平。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种读写锁的实现方法及装置。
背景技术
读写锁是实现数据互斥的一种基本机制,目前可以配置读写锁是读优先或写优先两种模式,若配置读写锁是读优先,如果有写锁申请在等待锁,则不会阻塞读锁申请。若配置读写锁是写优先,如果有写锁申请在等待锁,则后续所有的读锁申请都会阻塞。
针对于多核系统,一种分布式读写锁的实现过程为:为多核系统中的每个核分别配置一个读写锁,作为读者的每个核只读本核的读写锁,作为写者的核按照一定的顺序(例如,核编号从小到大)获取其余各个核的读写锁。采用这种分布式读写锁,作为读者的各个核之间完全做到了并发,然而,由于作为写者的核需要按照指定顺序获取其余各个核的读写锁,从而使得作为写者的核在遍历其余各个核的读写锁时,存在先后顺序,进而导致作为写者的核后遍历到的读写锁与先遍历到的读写锁相比,读者存在更多的机会读,从而产生了不公平性。
发明内容
本发明实施例提供一种读写锁的实现方法及装置,用以解决现有技术中采用分布式方式可能导致不公平性的技术问题。
本发明实施例提供一种读写锁的实现方法,应用于多核系统中,所述多核系统包括至少一套读写锁;一套所述读写锁包括一个写公共锁和与所述写公共锁对应的N个读私有锁,针对于所述至少一套读写锁中的一套读写锁,该方法包括:
确定所述写公共锁处于放锁状态后,判断写等待队列中是否存在写锁申请;
若所述写等待队列中存在写锁申请,则将所述写公共锁设置为加锁状态,并在确定所述N个读私有锁均处于放锁状态后,将所述写公共锁分配给所述写等待队列中写优先级最高的写锁申请;
若所述写等待队列中不存在写锁申请,则获取读等待队列中的M个读锁申请,从所述N个读私有锁中为所述M个读锁申请中的每个读锁申请分配一个读私有锁,并将已分配给所述M个读锁申请的M个读私有锁设置为加锁状态;所述M个读锁申请为所述读等待队列中的读锁申请按照读优先级由高到低的顺序排列后,得到的排名靠前的M个读锁申请;M、N为正整数,且M≤N。
如此,由于为M个读锁申请中的每个读锁申请均分配一个读私有锁,从而使得M个读锁申请的读者之间实现并发,能够避免多个读者频繁操作同一读写锁导致读写锁性能严重下降的问题,并通过将写公共锁设置为加锁状态,从而使得读等待队列中读锁申请的读者均无法获取到读私有锁,使得读者之间相互公平,避免了现有技术中由于写者遍历读写锁存在先后顺序而产生的不公平性问题。
较佳地,确定所述N个读私有锁均处于放锁状态,包括:
将所述N个读私有锁的状态值均设置为1;
遍历所述N个读私有锁,若所述N个读私有锁中第i个读私有锁处于放锁状态,则将所述第i个读私有锁的状态值更新为0,其中,i为整数,且1≤i≤N;
当所述N个读私有锁的状态值均为0,确定所述N个读私有锁均处于放锁状态。
如此,本发明实施例在确定N个读私有锁是否均处于放锁状态时,采用将N个读私有锁的状态值均设置为1,进而对各个读私有锁进行遍历,直到N个读私有锁的状态值均为0的方式来实现,即通过状态值来判断放锁状态,使得放锁状态的确定更为快速准确。
较佳地,遍历所述N个读私有锁,包括:
异步循环遍历所述N个读私有锁;所述异步循环遍历是指每次循环遍历的起点为状态值为1的读私有锁。
如此,通过异步循环遍历的方式来对N个读私有锁进行遍历,由于每次循环遍历的起点为状态值为1的读私有锁,从而能够减少遍历的读私有锁的个数,有效提高遍历的效率,减少处理负担。
较佳地,将所述写公共锁分配给所述写等待队列中的写优先级最高的写锁申请之后,还包括:
确定所述写优先级最高的写锁申请处理完毕后,将所述写公共锁设置为放锁状态。
如此,当获得写公共锁的写锁申请处理完毕后,将写公共锁设置为放锁状态,从而能够实现对后续的读锁申请和写锁申请进行处理。
较佳地,所述多核系统中至少包括N个核;所述N个读私有锁分别与所述N个核一一绑定;
从所述N个读私有锁中为所述M个读锁申请中的每个读锁申请分配一个读私有锁,并将已分配给所述M个读锁申请的M个读私有锁设置为加锁状态,包括:
从所述N个核中为所述M个读锁申请中的每个读锁申请分配一个核;
将与已分配给所述M个读锁申请的M个核绑定的M个读私有锁设置为加锁状态。
如此,由于N个读私有锁分别与N个核一一绑定,为M个读锁申请分配M个核后,M个核可分别获取到绑定的读私有锁,从而使得M个核之间实现并发处理。
较佳地,所述多核系统中包括W套读写锁;
第K个核与所述W套读写锁中对应不同写公共锁的M个读私有锁绑定;K、W为正整数,1≤K≤N。
较佳地,与一个所述核绑定的W个读私有锁存储在一个高速缓存行中;
每个所述核绑定的第j个读私有锁在对应的高速缓存行中的偏移量是一致的,j为正整数,1≤j≤W。
如此,一个高速缓存行中可以存储多个读私有锁,减少了内存浪费,且每个核绑定的第j个读私有锁在对应的高速缓存行中的偏移量是一致的,便于对一套读写锁中的各个读私有锁的操作。
本发明实施例提供一种读写锁的实现装置,包括:
存储器,用于存储至少一套读写锁,一套读写锁包括一个写公共锁和与所述写公共锁对应的N个读私有锁;
多核处理器,用于确定所述写公共锁处于放锁状态后,判断写等待队列中是否存在写锁申请,若所述写等待队列中存在写锁申请,则将所述写公共锁设置为加锁状态,并在确定所述N个读私有锁均处于放锁状态后,将所述写公共锁分配给所述写等待队列中写优先级最高的写锁申请;若所述写等待队列中不存在写锁申请,则获取读等待队列中的M个读锁申请,从所述N个读私有锁中为所述M个读锁申请中的每个读锁申请分配一个读私有锁,并将已分配给所述M个读锁申请的M个读私有锁设置为加锁状态;所述M个读锁申请为所述读等待队列中的读锁申请按照读优先级由高到低的顺序排列后,得到的排名靠前的M个读锁申请;M、N为正整数,且M≤N。
如此,由于为M个读锁申请中的每个读锁申请均分配一个读私有锁,从而使得M个读锁申请的读者之间实现并发,能够避免多个读者频繁操作同一读写锁导致读写锁性能严重下降的问题,并通过将写公共锁设置为加锁状态,从而使得读等待队列中读锁申请的读者均无法获取到读私有锁,使得读者之间相互公平,避免了现有技术中由于写者遍历读写锁存在先后顺序而产生的不公平性问题。
较佳地,所述多核处理器具体用于:
将所述N个读私有锁的状态值均设置为1;
遍历所述N个读私有锁,若所述N个读私有锁中第i个读私有锁处于放锁状态,则将所述第i读私有锁的状态值更新为0,其中,i为整数,且1≤i≤N;
当所述N个读私有锁的状态值均为0,确定所述N个读私有锁均处于放锁状态。
较佳地,所述多核处理器具体用于:
异步循环遍历所述N个读私有锁;所述异步循环遍历是指每次循环遍历的起点为状态值为1的读私有锁。
较佳地,所述多核处理器还用于:
确定所述写优先级最高的写锁申请处理完毕后,将所述写公共锁设置为放锁状态。
较佳地,所述多核处理器中包括N个核;所述N个读私有锁与所述N个核一一绑定;
所述多核处理器具体用于:
从所述N个核中为所述M个读锁申请的每个读锁申请分配一个核;
将与已分配给所述M个读锁申请的M个核绑定的M个读私有锁设置为加锁状态。
较佳地,所述存储器中存储有W套读写锁;
第K个核与所述W套读写锁中对应不同写公共锁的M个读私有锁绑定;K、W为正整数,1≤K≤N。
较佳地,所述存储器中包括N个高速缓存行;
所述多核处理器还用于:
将与一个所述核绑定的M个读私有锁存储在一个所述高速缓存行中;每个所述核绑定的第j个读私有锁在对应的缓存行中的偏移量是一致的,j为正整数,1≤j≤W。
本发明实施例中的读写锁包括一个写公共锁和与写公共锁对应的N个读私有锁;确定写公共锁处于放锁状态后,判断写等待队列中是否存在写锁申请,若写等待队列中存在写锁申请,则将写公共锁设置为加锁状态,并在确定N个读私有锁均处于放锁状态后,将写公共锁分配给写等待队列中写优先级最高的写锁申请;若写等待队列中不存在写锁申请,则获取读等待队列中的M个读锁申请,从N个读私有锁中为M个读锁申请中的每个读锁申请分配一个读私有锁,并将已分配给M个读锁申请的M个读私有锁设置为加锁状态其中,M个读锁申请为读等待队列中的读锁申请按照读优先级由高到低的顺序排列后,得到的排名靠前的M个读锁申请。本发明实施例中,由于为M个读锁申请中的每个读锁申请均分配一个读私有锁,从而使得M个读锁申请的读者之间实现并发,能够避免多个读者频繁操作同一读写锁导致读写锁性能严重下降的问题,并通过将写公共锁设置为加锁状态,从而使得读等待队列中读锁申请的读者均无法获取到读私有锁,使得读者之间相互公平,避免了现有技术中由于写者遍历读写锁存在先后顺序而产生的不公平性问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一套读写锁示意图;
图2为本发明实施例提供的一种读写锁的实现方法示意图;
图3为本发明实施例中异步循环遍历的流程示意图;
图4为本发明实施例中m个核所绑定的读私有锁内存分布示意图;
图5为本发明实施例提供的一种读写锁的实现装置的结构示意图;
图6为本发明实施例提供的另一种读写锁的实现装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
读写锁是多核系统中针对于临界资源最常用的竞争机制,临界资源是指一次仅允许一个写者或读者进行操作的资源,或者是一次仅允许一个写者进行写操作且允许多个读者进行读操作的资源,写者和读者是指需要对临界资源进行指定操作的硬件或软件。每个读者或写者在访问临界资源前,都需要先获得读写锁,然后才可以访问临界资源,访问完成后再释放读写锁,从而保证了多个读者和写者能够有序地访问临界资源。其中,读者和写者分别是根据读锁申请和写锁申请执行读操作和写操作,一个读者或写者可以是指一个逻辑中央处理器(Central Processing Unit,缩写CPU)或者一个核的软件。
本发明实施例正是针对多核系统而提出的一种读写锁的实现方法,多核系统可以包括至少一套读写锁。如图1所示,为本发明实施例中的一套读写锁示意图,具体包括一个写公共锁和与写公共锁对应的N个读私有锁,N为正整数。
如图1所示,第一读私有锁与核0绑定,第二读私有锁与核1绑定,……,第N读私有锁与核N绑定。读锁申请的读者和写锁申请的写者均需要先读写公共锁,并根据写公共锁的状态执行相应的操作。例如,若写公共锁处于加锁状态(即写公共锁已分配给写者),则读者需等待;若写公共锁处于放锁状态,则通过异步循环判断确定所有读私有锁均处于放锁状态后,写者可获取写公共锁。
基于图1所示的读写锁,图2示出了本发明实施例提供的一种读写锁的实现方法示意图,该方法步骤为针对于一套读写锁的实现方式,具体包括:
步骤201,确定所述写公共锁处于放锁状态;
步骤202,判断写等待队列中是否存在写锁申请,若存在,则执行步骤203;若不存在,则执行步骤204;
步骤203,则将所述写公共锁设置为加锁状态,并在确定所述N个读私有锁均处于放锁状态后,将所述写公共锁分配给所述写等待队列中写优先级最高的写锁申请;
步骤204,获取读等待队列中的M个读锁申请,从所述N个读私有锁中为所述M个读锁申请中的每个读锁申请分配一个读私有锁,并将已分配给所述M个读锁申请的M个读私有锁设置为加锁状态;所述M个读锁申请为所述读等待队列中的读锁申请按照读优先级由高到低的顺序排列后,得到的排名靠前的M个读锁申请;M、N为正整数,且M≤N。
本发明实施例中,由于为M个读锁申请中的每个读锁申请均分配一个读私有锁,从而使得M个读锁申请的读者之间实现并发,能够避免多个读者频繁操作同一读写锁导致读写锁性能严重下降的问题,并通过将写公共锁设置为加锁状态,从而使得读等待队列中读锁申请的读者均无法获取到读私有锁,使得读者之间相互公平,避免了现有技术中由于写者遍历读写锁存在先后顺序而产生的不公平性问题。
本发明实施例中的读写锁主要基于读锁申请比较多而写锁申请相对较少的场景,因此,默认写锁申请的优先级高于读锁申请的优先级,因此,在步骤402中,当判断写等到队列中存在写锁申请时,会优先处理写锁申请。
在步骤203中,将N个读私有锁的状态值均设置为1,异步循环遍历所述N个读私有锁,若第i个读私有锁处于放锁状态,则将所述第i个读私有锁的状态值更新为0,直至所述第一至第N读私有锁的状态值均更新为0为止,确定所述N个读私有锁均处于放锁状态。其中,异步循环遍历是指每次循环遍历的起点为状态值为1的读私有锁。
下面结合具体实例对异步循环遍历的方法进行描述。以N等于5为例,读锁申请1对应第一读私有锁、读锁申请2对应第二读私有锁、读锁申请3对应第三读私有锁、读锁申请4对应第四读私有锁、读锁申请5对应第五读私有锁,如图3所示,为异步循环遍历的流程示意图,具体包括如下步骤:
步骤301,将第一至第五读私有锁的状态值均设置为1,如表1所示:
表1:第一至第五读私有锁状态值(初始状态)
第一读私有锁 | 第二读私有锁 | 第三读私有锁 | 第四读私有锁 | 第五读私有锁 |
1 | 1 | 1 | 1 | 1 |
步骤302,第一次遍历,从第一读私有锁开始遍历至第五读私有锁,判断得知第一读私有锁处于放锁状态,则将第一读私有锁的状态值设置为0;继续判断第二读私有锁,得知第二读私有锁仍处于加锁状态,则第二读私有锁的状态值保持为1;继续判断第三读私有锁,得知第三读私有锁处于放锁状态,则将第三读私有锁的状态值设置为0;继续判断第四读私有锁,得知第四读私有锁仍处于加锁状态,则第四读私有锁的状态值保持为1;继续判断第五读私有锁,得知第五读私有锁仍处于加锁状态,则第五读私有锁的状态值保持为1。第一次遍历结束后,得到第一至第五读私有锁的状态值,如表2所示:
表2:第一至第五读私有锁状态值(第一次遍历后)
第一读私有锁 | 第二读私有锁 | 第三读私有锁 | 第四读私有锁 | 第五读私有锁 |
0 | 1 | 0 | 1 | 1 |
步骤303,第二次遍历,由于第一读私有锁已经为0,此时遍历的起点为第二读私有锁。其中,确定第二读私有锁为遍历起点的方法可采用位运算函数来实现,即从第一位开始找出第一个状态值为1的位置,并返回第一个状态值为1的位置的索引。从第二读私有锁开始遍历至第五读私有锁。第二次遍历结束后,得到第一至第五读私有锁的状态值,如表3所示:
表3:第一至第五读私有锁状态值(第二次遍历后)
第一读私有锁 | 第二读私有锁 | 第三读私有锁 | 第四读私有锁 | 第五读私有锁 |
0 | 0 | 0 | 1 | 1 |
步骤304,第三次遍历,由于第一至第三读私有锁均已经为0,此时遍历的起点为第四读私有锁,其中,确定第三读私有锁为遍历起点的方法可采用位运算函数来实现。从第四私有锁开始遍历至第五读私有锁。第三次遍历结束后,得到第一至第五读私有锁的状态值,如表4所示:
表4:第一至第五读私有锁状态值(第三次遍历后)
第一读私有锁 | 第二读私有锁 | 第三读私有锁 | 第四读私有锁 | 第五读私有锁 |
0 | 0 | 0 | 0 | 1 |
步骤305,由于第一至第四读私有锁均已经为0,通过采用位函数确定第五读私有锁为遍历的起点,此时可循环判断第五读私有锁的状态,直至第五读私有锁处于放锁状态后,将第五读私有锁的状态值设置为0,此时第一至第五读私有锁的状态值均为0,可确定第一至第五读私有锁均处于放锁状态。
通过采用上述异步循环遍历的方式,若某个读私有锁处于放锁状态,则可将该读私有锁设置为0,从而使得各个读私有锁之间无需相互等待,而且明显减少了遍历的读私有锁的个数,能够有效提高遍历的效率。
本发明实施例中,不同的写锁申请具有不同的写优先级。由于一次仅有一个写锁申请能够获得写公共锁,因此,在步骤203中,通过异步循环遍历,确定第一至第N读私有锁均处于放锁状态后,若写等待队列中存在多个写锁申请,可根据各个写锁申请的优先级,将写公共锁分配给写优先级最高的写锁申请。
进一步地,确定写优先级最高的写锁申请处理完毕后,将写公共锁设置为放锁状态,以便于其它的写锁申请获取写公共锁。由于读锁申请的优先级低于写锁申请的优先级,因此,当不存在写锁申请时,可处理读锁申请。
本发明实施例中,多核系统中至少包括N个核,写公共锁对应的N个读私有锁分别与N个核一一绑定。在步骤204中,获取读等待队列中的M个读锁申请,其中,M个读锁申请为所述读等待队列中的读锁申请按照读优先级由高到低的顺序排列后,得到的排名靠前的M个读锁申请。
具体地,读等待队列中的读锁申请按照读优先级由高到低的顺序排列可以通过以下任一种方式得到:
(1)各个读锁申请在到达读等待队列中均按照读优先级进行实时排序,例如,若读锁申请的读优先级是根据到达读等待队列中的时间决定的,即越早到达读等待队列中的读锁申请的读优先级越高,则各个读锁申请在到达后,可直接按照排队的方式排列;若读锁申请的读优先级是预先设置的,则读锁申请x1先到达读等待队列中,随后,读锁申请x2到达读等待队列中,此时,通过比较,若读锁申请x2的读优先级高于读锁申请x1,则读锁申请x2可排在读锁申请x1的前面;读锁申请x3到达读等待队列中后,通过比较,若读锁申请x3的读优先级高于读锁申请x1,且低于读锁申请x2,则读锁申请x3可排在读锁申请x1的前面,x2的后面,同样地,其它后到达的读锁申请依次按照此种方式排列。
(2)在需要获取读等待队列中的读锁申请时,对读等待队列中的读锁申请按照读优先级进行排序,即各个读锁申请在到达读等待队列后,并未进行排序,而是后续统一排序。例如,读等待队列中包括读锁申请x1、读锁申请x2、……、读锁申请xx,这些读锁申请并未按照读优先级进行排序,在确定写公共锁处于放锁状态,且写等待队列中不存在写锁申请后,对读等待队列中的各个读锁申请按照读优先级由高到低的顺序进行统一排序。
通过上述方式,对读等待队列中的读锁申请进行排列后,由于N个读私有锁可以分配给N个读锁申请,因此,若读等待队列中的读锁申请的个数大于N个,则此时,可获取读优先级排名靠前的N个读锁申请;若读等待队列中的读锁申请的个数小于等于N个,则此时,可获取读等待队列中所有的读锁申请。也就是说,获取读等待队列中读优先级排名靠前的M个读锁申请,M≤N。
随后,从N个核中为所述M个读锁申请中的每个读锁申请分配一个核,将与已分配给M个读锁申请的M个核绑定的M个读私有锁设置为加锁状态。具体地,本发明实施例中,可通过M个核将与M个核绑定的M个读私有锁设置为加锁状态。图4为本发明实施例中N个核所绑定的读私有锁内存分布示意图。下面结合图6,对多核系统中包括W套读写锁的情况进行说明。
如图4所示,读私有锁a1、读私有锁a2,…,读私有锁aN对应写公共锁A,并与写公共锁A共同构成第一套读写锁;读私有锁b1、读私有锁b2,…,读私有锁bN对应写公共锁B,并与写公共锁B共同构成第二套读写锁;读私有锁c1、读私有锁c2,…,读私有锁cN对应写公共锁C,并与写公共锁C共同构成第三套读写锁;读私有锁d1、读私有锁d2,…,读私有锁dN对应写公共锁D,并与写公共锁D共同构成第W套读写锁。读私有锁a1、读私有锁b1、读私有锁c1、…,读私有锁d1(共有W个读私有锁)与核1绑定,读私有锁a2、读私有锁b2、读私有锁c2、…,读私有锁d2与核2绑定,读私有锁aN、读私有锁bN、读私有锁cN、…,读私有锁dN与核N绑定。
从图4中可以看出,在多核系统中包括W套读写锁的情况下,一个核可以与W套读写锁中对应不同写公共锁的W个读私有锁绑定。进一步地,与每个核绑定的各个读私有锁存储在一个高速缓存行(英文:cacheline)中,这样既解决了不同核刷同一高速缓存器的问题,也解决了内存浪费的问题。同时,每个核绑定的第j个读私有锁在对应的缓存行中的偏移量是一致的,从而保证同一写公共锁对应的多个读私有锁cacheline对齐。
本发明实施例中,假设一个cacheline是64个字节,一个读私有锁内存占4个字节,则一个cacheline可以包含16个读私有锁,其中,16个读私有锁分别对应16套读写锁中的写公共锁。本发明实施例的读写锁中包含的读私有锁的个数与核个数等同,若核个数为N=8,则每个写公共锁对应的读私有锁分别分布在8个cacheline的指定偏移里,从而使得8个cacheline总共可以装下16套读写锁。而当需要再申请第17套读写锁时,则需再用到新一组的8个cacheline。
由于写公共锁要被多个核(写公共锁对应的多个读私有锁分别绑定的核)读,因此,写公共锁没有内存分配位置的限制,可额外提供一个cacheline装写公共锁即可,并在申请释放时记录下其在cacheline中的位置。
本发明实施例中的读写锁包括一个写公共锁和与写公共锁对应的N个读私有锁;确定写公共锁处于放锁状态后,判断写等待队列中是否存在写锁申请,若写等待队列中存在写锁申请,则将写公共锁设置为加锁状态,并在确定N个读私有锁均处于放锁状态后,将写公共锁分配给写等待队列中写优先级最高的写锁申请;若写等待队列中不存在写锁申请,则获取读等待队列中的M个读锁申请,从N个读私有锁中为M个读锁申请中的每个读锁申请分配一个读私有锁,并将已分配给M个读锁申请的M个读私有锁设置为加锁状态其中,M个读锁申请为读等待队列中的读锁申请按照读优先级由高到低的顺序排列后,得到的排名靠前的M个读锁申请。本发明实施例中,由于为M个读锁申请中的每个读锁申请均分配一个读私有锁,从而使得M个读锁申请的读者之间实现并发,能够避免多个读者频繁操作同一读写锁导致读写锁性能严重下降的问题,并通过将写公共锁设置为加锁状态,从而使得读等待队列中读锁申请的读者均无法获取到读私有锁,使得读者之间相互公平,避免了现有技术中由于写者遍历读写锁存在先后顺序而产生的不公平性问题。
针对上述方法流程,本发明实施例还提供一种读写锁的实现装置,该装置的具体内容可以参照上述方法实施。
本发明实施例中,一套读写锁包括一个写公共锁和与该写公共锁对应的N个读私有锁。基于此,图5为本发明实施例提供的一种读写锁的实现装置的结构示意图,该装置500包括:
确定模块501,用于确定所述写公共锁是否处于放锁状态;
判断模块502,用于在所述确定模块确定写公共锁处于放锁状态后,判断写等待队列中是否存在写锁申请;
处理模块503,用于根据所述判断模块的判断结果,若确定写等待队列中存在写锁申请,则将所述写公共锁设置为加锁状态,并在确定所述N个读私有锁均处于放锁状态后,将所述写公共锁分配给所述写等待队列中写优先级最高的写锁申请;若确定所述写等待队列中不存在写锁申请,则获取读等待队列中的M个读锁申请,从所述N个读私有锁中为所述M个读锁申请中的每个读锁申请分配一个读私有锁,并将已分配给所述M个读锁申请的M个读私有锁设置为加锁状态;所述M个读锁申请为所述读等待队列中的读锁申请按照读优先级由高到低的顺序排列后,得到的排名靠前的M个读锁申请;M、N为正整数,且M≤N。
较佳地,所述处理模块503具体用于:
将所述N个读私有锁的状态值均设置为1;
遍历所述N个读私有锁,若所述N个读私有锁中第i个读私有锁处于放锁状态,则将所述第i读私有锁的状态值更新为0,其中,i为整数数,且1≤i≤N;
当所述N个读私有锁的状态值均为0,确定所述N个读私有锁均处于放锁状态。
较佳地,所述处理模块503具体用于:
异步循环遍历所述第一至第N读私有锁;所述异步循环遍历是指每次循环遍历的起点为状态值为1的读私有锁。
较佳地,所述处理模块503还用于:
确定所述写优先级最高的写锁申请处理完毕后,将所述写公共锁设置为放锁状态。
较佳地,所述读写锁的实现装置中至少包括N个核;所述N个读私有锁分别与所述N个核一一绑定;
所述处理模块503具体用于:
从所述N个核中为所述M个读锁申请中的每个读锁申请分配一个核;
将与已分配给所述M个读锁申请的M个核绑定的M个读私有锁设置为加锁状态。
较佳地,所述读写锁的实现装置中包括W套读写锁,第K个核与所述W套读写锁中对应不同写公共锁的M个读私有锁绑定;K、W为正整数,1≤K≤N。
较佳地,所述读写锁的实现装置中包括N个高速缓存行;
所述处理模块503还用于:
将与一个所述核绑定的W个读私有锁存储在一个高速缓存行中;
每个所述核绑定的第j个读私有锁在对应的高速缓存行中的偏移量是一致的,j为正整数,1≤j≤W。
本发明实施例中的读写锁包括一个写公共锁和与写公共锁对应的N个读私有锁;确定写公共锁处于放锁状态后,判断写等待队列中是否存在写锁申请,若写等待队列中存在写锁申请,则将写公共锁设置为加锁状态,并在确定N个读私有锁均处于放锁状态后,将写公共锁分配给写等待队列中写优先级最高的写锁申请;若写等待队列中不存在写锁申请,则获取读等待队列中的M个读锁申请,从N个读私有锁中为M个读锁申请中的每个读锁申请分配一个读私有锁,并将已分配给M个读锁申请的M个读私有锁设置为加锁状态其中,M个读锁申请为读等待队列中的读锁申请按照读优先级由高到低的顺序排列后,得到的排名靠前的M个读锁申请。本发明实施例中,由于为M个读锁申请中的每个读锁申请均分配一个读私有锁,从而使得M个读锁申请的读者之间实现并发,能够避免多个读者频繁操作同一读写锁导致读写锁性能严重下降的问题,并通过将写公共锁设置为加锁状态,从而使得读等待队列中读锁申请的读者均无法获取到读私有锁,使得读者之间相互公平,避免了现有技术中由于写者遍历读写锁存在先后顺序而产生的不公平性问题。
基于相同的构思,图6为本发明实施例提供的另一种读写锁的实现装置的结构示意图,该装置600包括:
存储器601,用于存储至少一套读写锁,一套读写锁包括一个写公共锁和与所述写公共锁对应的N个读私有锁,N为正整数;
多核处理器602,用于确定所述写公共锁处于放锁状态后,判断写等待队列中是否存在写锁申请,若所述写等待队列中存在写锁申请,则将所述写公共锁设置为加锁状态,并在确定所述N个读私有锁均处于放锁状态后,将所述写公共锁分配给所述写等待队列中写优先级最高的写锁申请;若所述写等待队列中不存在写锁申请,则获取读等待队列中的M个读锁申请,从所述N个读私有锁中为所述M个读锁申请中的每个读锁申请分配一个读私有锁,并将已分配给所述M个读锁申请的M个读私有锁设置为加锁状态;所述M个读锁申请为所述读等待队列中的读锁申请按照读优先级由高到低的顺序排列后,得到的排名靠前的M个读锁申请;M、N为正整数,且M≤N。
较佳地,所述多核处理器602具体用于:
将所述N个读私有锁的状态值均设置为1;
遍历所述N个读私有锁,若所述N个读私有锁中第i个读私有锁处于放锁状态,则将所述第i读私有锁的状态值更新为0,其中,i为整数,且1≤i≤N;
当所述N个读私有锁的状态值均为0,确定所述N个读私有锁均处于放锁状态。
较佳地,所述多核处理器602具体用于:
异步循环遍历所述N个读私有锁;所述异步循环遍历是指每次循环遍历的起点为状态值为1的读私有锁。
较佳地,所述多核处理器602还用于:
确定所述写优先级最高的写锁申请处理完毕后,将所述写公共锁设置为放锁状态。
较佳地,所述多核处理器602中包括N核;所述N个读私有锁与N个核一一绑定;
所述多核处理器602具体用于:
从所述N个核中为所述M个读锁申请的每个读锁申请分配一个核;
将与已分配给所述M个读锁申请的M个核绑定的M个读私有锁设置为加锁状态。
较佳地,所述存储器601中存储有W套读写锁;
第K个核与所述W套读写锁中对应不同写公共锁的M个读私有锁绑定;K、W为正整数,1≤K≤N。
较佳地,所述存储器601中包括N个高速缓存行;
所述多核处理器602还用于:
将与一个所述核绑定的M个读私有锁存储在一个所述高速缓存行中;每个所述核绑定的第j个读私有锁在对应的缓存行中的偏移量是一致的,j为正整数,1≤j≤W。
其中,总线架构可以包括任意数量的互联的总线和桥,具体由多核处理器代表的处理器和存储器代表的存储器的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口,多核处理器负责管理总线架构和通常的处理,存储器可以存储处理器在执行操作时所使用的数据。
从上述内容可以看出:
本发明实施例中的读写锁包括一个写公共锁和与写公共锁对应的N个读私有锁;确定写公共锁处于放锁状态后,判断写等待队列中是否存在写锁申请,若写等待队列中存在写锁申请,则将写公共锁设置为加锁状态,并在确定N个读私有锁均处于放锁状态后,将写公共锁分配给写等待队列中写优先级最高的写锁申请;若写等待队列中不存在写锁申请,则获取读等待队列中的M个读锁申请,从N个读私有锁中为M个读锁申请中的每个读锁申请分配一个读私有锁,并将已分配给M个读锁申请的M个读私有锁设置为加锁状态其中,M个读锁申请为读等待队列中的读锁申请按照读优先级由高到低的顺序排列后,得到的排名靠前的M个读锁申请。本发明实施例中,由于为M个读锁申请中的每个读锁申请均分配一个读私有锁,从而使得M个读锁申请的读者之间实现并发,能够避免多个读者频繁操作同一读写锁导致读写锁性能严重下降的问题,并通过将写公共锁设置为加锁状态,从而使得读等待队列中读锁申请的读者均无法获取到读私有锁,使得读者之间相互公平,避免了现有技术中由于写者遍历读写锁存在先后顺序而产生的不公平性问题。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (14)
1.一种读写锁的实现方法,应用于多核系统中,其特征在于,所述多核系统包括至少一套读写锁;一套所述读写锁包括一个写公共锁和与所述写公共锁对应的N个读私有锁,针对于所述至少一套读写锁中的一套读写锁,该方法包括:
确定所述写公共锁处于放锁状态后,判断写等待队列中是否存在写锁申请;
若所述写等待队列中存在写锁申请,则将所述写公共锁设置为加锁状态,并在确定所述N个读私有锁均处于放锁状态后,将所述写公共锁分配给所述写等待队列中写优先级最高的写锁申请;
若所述写等待队列中不存在写锁申请,则获取读等待队列中的M个读锁申请,从所述N个读私有锁中为所述M个读锁申请中的每个读锁申请分配一个读私有锁,并将已分配给所述M个读锁申请的M个读私有锁设置为加锁状态;所述M个读锁申请为所述读等待队列中的读锁申请按照读优先级由高到低的顺序排列后,得到的排名靠前的M个读锁申请;M、N为正整数,且M≤N。
2.如权利要求1所述的方法,其特征在于,确定所述N个读私有锁均处于放锁状态,包括:
将所述N个读私有锁的状态值均设置为1;
遍历所述N个读私有锁,若所述N个读私有锁中第i个读私有锁处于放锁状态,则将所述第i个读私有锁的状态值更新为0,其中,i为整数,且1≤i≤N;
当所述N个读私有锁的状态值均为0,确定所述N个读私有锁均处于放锁状态。
3.如权利要求2所述的方法,其特征在于,遍历所述N个读私有锁,包括:
异步循环遍历所述N个读私有锁;所述异步循环遍历是指每次循环遍历的起点为状态值为1的读私有锁。
4.如权利要求1所述的方法,其特征在于,将所述写公共锁分配给所述写等待队列中的写优先级最高的写锁申请之后,还包括:
确定所述写优先级最高的写锁申请处理完毕后,将所述写公共锁设置为放锁状态。
5.如权利要求1所述的方法,其特征在于,所述多核系统中至少包括N个核;所述N个读私有锁分别与所述N个核一一绑定;
从所述N个读私有锁中为所述M个读锁申请中的每个读锁申请分配一个读私有锁,并将已分配给所述M个读锁申请的M个读私有锁设置为加锁状态,包括:
从所述N个核中为所述M个读锁申请中的每个读锁申请分配一个核;
将与已分配给所述M个读锁申请的M个核绑定的M个读私有锁设置为加锁状态。
6.如权利要求5所述的方法,其特征在于,所述多核系统中包括W套读写锁;
第K个核与所述W套读写锁中对应不同写公共锁的M个读私有锁绑定;K、W为正整数,1≤K≤N。
7.如权利要求6所述的方法,其特征在于,与一个所述核绑定的W个读私有锁存储在一个高速缓存行中;
每个所述核绑定的第j个读私有锁在对应的高速缓存行中的偏移量是一致的,j为正整数,1≤j≤W。
8.一种读写锁的实现装置,其特征在于,包括:
存储器,用于存储至少一套读写锁,一套读写锁包括一个写公共锁和与所述写公共锁对应的N个读私有锁;
多核处理器,用于确定所述写公共锁处于放锁状态后,判断写等待队列中是否存在写锁申请,若所述写等待队列中存在写锁申请,则将所述写公共锁设置为加锁状态,并在确定所述N个读私有锁均处于放锁状态后,将所述写公共锁分配给所述写等待队列中写优先级最高的写锁申请;若所述写等待队列中不存在写锁申请,则获取读等待队列中的M个读锁申请,从所述N个读私有锁中为所述M个读锁申请中的每个读锁申请分配一个读私有锁,并将已分配给所述M个读锁申请的M个读私有锁设置为加锁状态;所述M个读锁申请为所述读等待队列中的读锁申请按照读优先级由高到低的顺序排列后,得到的排名靠前的M个读锁申请;M、N为正整数,且M≤N。
9.如权利要求8所述的装置,其特征在于,所述多核处理器具体用于:
将所述N个读私有锁的状态值均设置为1;
遍历所述N个读私有锁,若所述N个读私有锁中第i个读私有锁处于放锁状态,则将所述第i读私有锁的状态值更新为0,其中,i为整数,且1≤i≤N;
当所述N个读私有锁的状态值均为0,确定所述N个读私有锁均处于放锁状态。
10.如权利要求9所述的装置,其特征在于,所述多核处理器具体用于:
异步循环遍历所述N个读私有锁;所述异步循环遍历是指每次循环遍历的起点为状态值为1的读私有锁。
11.如权利要求8所述的装置,其特征在于,所述多核处理器还用于:
确定所述写优先级最高的写锁申请处理完毕后,将所述写公共锁设置为放锁状态。
12.如权利要求8所述的装置,其特征在于,所述多核处理器中包括N个核;所述N个读私有锁与所述N个核一一绑定;
所述多核处理器具体用于:
从所述N个核中为所述M个读锁申请的每个读锁申请分配一个核;
将与已分配给所述M个读锁申请的M个核绑定的M个读私有锁设置为加锁状态。
13.如权利要求12所述的装置,其特征在于,所述存储器中存储有W套读写锁;
第K个核与所述W套读写锁中对应不同写公共锁的M个读私有锁绑定;K、W为正整数,1≤K≤N。
14.如权利要求13所述的装置,其特征在于,所述存储器中包括N个高速缓存行;
所述多核处理器还用于:
将与一个所述核绑定的M个读私有锁存储在一个所述高速缓存行中;每个所述核绑定的第j个读私有锁在对应的缓存行中的偏移量是一致的,j为正整数,1≤j≤W。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610201019.1A CN107291371B (zh) | 2016-03-31 | 2016-03-31 | 一种读写锁的实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610201019.1A CN107291371B (zh) | 2016-03-31 | 2016-03-31 | 一种读写锁的实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107291371A true CN107291371A (zh) | 2017-10-24 |
CN107291371B CN107291371B (zh) | 2019-11-19 |
Family
ID=60088170
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610201019.1A Active CN107291371B (zh) | 2016-03-31 | 2016-03-31 | 一种读写锁的实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107291371B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022155970A1 (zh) * | 2021-01-25 | 2022-07-28 | 华为技术有限公司 | 一种内存控制方法及内存控制装置 |
WO2023103434A1 (zh) * | 2021-12-09 | 2023-06-15 | 华为技术有限公司 | 一种锁管理方法、装置及系统 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1913412A (zh) * | 2006-07-31 | 2007-02-14 | 杭州华为三康技术有限公司 | 队列访问方法和装置 |
CN1920780A (zh) * | 2006-08-15 | 2007-02-28 | 杭州华为三康技术有限公司 | 访问临界区的方法和系统 |
CN101615203A (zh) * | 2009-07-23 | 2009-12-30 | 中兴通讯股份有限公司 | 并发控制方法及装置 |
CN101908034A (zh) * | 2010-06-28 | 2010-12-08 | 中国科学院计算技术研究所 | 众核处理器片上同步方法和其系统 |
CN102262559A (zh) * | 2010-05-24 | 2011-11-30 | 腾讯科技(深圳)有限公司 | 一种资源共享的方法及系统 |
CN103488563A (zh) * | 2013-09-05 | 2014-01-01 | 龙芯中科技术有限公司 | 并行程序的数据竞争检测方法、装置及多核处理系统 |
CN103778002A (zh) * | 2012-10-18 | 2014-05-07 | 华为技术有限公司 | 多核系统中回收临界资源的方法、装置和设备 |
US8868845B1 (en) * | 2011-03-31 | 2014-10-21 | Emc Corporation | Dynamic single/multi-reader, single-writer spinlocks |
CN104461707A (zh) * | 2014-11-28 | 2015-03-25 | 华为技术有限公司 | 一种锁请求处理方法及装置 |
CN105095144A (zh) * | 2015-07-24 | 2015-11-25 | 中国人民解放军国防科学技术大学 | 基于栅栏和锁的多核Cache一致性维护的方法和装置 |
-
2016
- 2016-03-31 CN CN201610201019.1A patent/CN107291371B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1913412A (zh) * | 2006-07-31 | 2007-02-14 | 杭州华为三康技术有限公司 | 队列访问方法和装置 |
CN1920780A (zh) * | 2006-08-15 | 2007-02-28 | 杭州华为三康技术有限公司 | 访问临界区的方法和系统 |
CN101615203A (zh) * | 2009-07-23 | 2009-12-30 | 中兴通讯股份有限公司 | 并发控制方法及装置 |
CN102262559A (zh) * | 2010-05-24 | 2011-11-30 | 腾讯科技(深圳)有限公司 | 一种资源共享的方法及系统 |
CN101908034A (zh) * | 2010-06-28 | 2010-12-08 | 中国科学院计算技术研究所 | 众核处理器片上同步方法和其系统 |
US8868845B1 (en) * | 2011-03-31 | 2014-10-21 | Emc Corporation | Dynamic single/multi-reader, single-writer spinlocks |
CN103778002A (zh) * | 2012-10-18 | 2014-05-07 | 华为技术有限公司 | 多核系统中回收临界资源的方法、装置和设备 |
CN103488563A (zh) * | 2013-09-05 | 2014-01-01 | 龙芯中科技术有限公司 | 并行程序的数据竞争检测方法、装置及多核处理系统 |
CN104461707A (zh) * | 2014-11-28 | 2015-03-25 | 华为技术有限公司 | 一种锁请求处理方法及装置 |
CN105095144A (zh) * | 2015-07-24 | 2015-11-25 | 中国人民解放军国防科学技术大学 | 基于栅栏和锁的多核Cache一致性维护的方法和装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022155970A1 (zh) * | 2021-01-25 | 2022-07-28 | 华为技术有限公司 | 一种内存控制方法及内存控制装置 |
WO2023103434A1 (zh) * | 2021-12-09 | 2023-06-15 | 华为技术有限公司 | 一种锁管理方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107291371B (zh) | 2019-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105893126B (zh) | 一种任务调度方法及装置 | |
US7669036B2 (en) | Direct path monitoring by primary processor to each status register in pipeline chained secondary processors for task allocation via downstream communication | |
CN102124443B (zh) | 在单指令多数据(simd)数据处理器中提供扩展寻址模式 | |
CN102902573B (zh) | 一种基于共享资源的任务的处理方法及装置 | |
CN103729480B (zh) | 一种多核实时操作系统多个就绪任务快速查找及调度方法 | |
CN105678378A (zh) | 间接访问样本数据以在并行处理系统中执行多卷积操作 | |
DE102012221502A1 (de) | System und Verfahren zum Durchführen von gestalteter-Speicherzugriff-Operationen | |
CN102890625B (zh) | 运算和控制单元、运算和控制方法、与并行处理器 | |
CN107644286A (zh) | 工作流处理方法及装置 | |
DE102012222394A1 (de) | Verfahren und Vorrichtung zum Sammelzwischenspeichern von Quelloperanden | |
CN107113341A (zh) | 用于数据划分的分布式关系数据库管理系统中事务的高吞吐量处理的系统 | |
DE112013004783T5 (de) | Durch Lese- und Schreibmasken gesteuerter Vektor-Verschiebebefehl | |
CN105095425B (zh) | 一种数据库的跨库结转方法及装置 | |
CN107729267B (zh) | 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构 | |
CN110647999A (zh) | 一种基于拓扑结构提高深度学习训练速度的方法及装置 | |
CN106445398A (zh) | 一种基于新型存储器的嵌入式文件系统及其实现方法 | |
CN105210038B (zh) | 核亲和性位掩码变换 | |
CN109522013A (zh) | 一种业务功能的代码生成方法及装置 | |
CN104461862B (zh) | 数据处理系统以及线程崩溃后的资源恢复方法和装置 | |
CN113313247B (zh) | 基于数据流架构的稀疏神经网络的运算方法 | |
CN106708620A (zh) | 一种处理数据的方法及系统 | |
US11023277B2 (en) | Scheduling of tasks in a multiprocessor device | |
CN107291371A (zh) | 一种读写锁的实现方法及装置 | |
CN108874297A (zh) | 合并文件的方法、存储装置、存储设备和存储介质 | |
TWI776263B (zh) | 應用資料標籤在多計算單元平台上的資料共用方法 |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20211201 Address after: 215010 room 704, building 5, No. 556, Changjiang Road, high tech Zone, Suzhou, Jiangsu Patentee after: SUZHOU YUDESHUI ELECTRICAL TECHNOLOGY Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |