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。