CN113961364A - 一种大规模锁***实现方法、装置、存储介质和服务器 - Google Patents

一种大规模锁***实现方法、装置、存储介质和服务器 Download PDF

Info

Publication number
CN113961364A
CN113961364A CN202111189055.8A CN202111189055A CN113961364A CN 113961364 A CN113961364 A CN 113961364A CN 202111189055 A CN202111189055 A CN 202111189055A CN 113961364 A CN113961364 A CN 113961364A
Authority
CN
China
Prior art keywords
lock
application program
request
calling interface
executed
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.)
Pending
Application number
CN202111189055.8A
Other languages
English (en)
Inventor
何清
禹力杰
王毅
王奕飞
谢贝贝
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xian Thermal Power Research Institute Co Ltd
Xian TPRI Power Station Information Technology Co Ltd
Original Assignee
Xian Thermal Power Research Institute Co Ltd
Xian TPRI Power Station Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xian Thermal Power Research Institute Co Ltd, Xian TPRI Power Station Information Technology Co Ltd filed Critical Xian Thermal Power Research Institute Co Ltd
Priority to CN202111189055.8A priority Critical patent/CN113961364A/zh
Publication of CN113961364A publication Critical patent/CN113961364A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

一种大规模锁***实现方法、装置、存储介质和服务器,大规模锁***实现方法包括应用程序调用本软件模块应用程序调用接口,初始化锁池管理对象,应用程序调用接口接到访问请求,转到锁池管理层实现服务;应用程序调用本软件模块应用程序调用接口,为需要进行锁保护的对象创建一个逻辑锁对象,应用程序调用接口接到访问请求,转到逻辑锁管理层实现服务;应用程序调用本软件模块应用程序调用接口,执行加锁流程以及解锁流程,转到逻辑锁操作层实现对应服务。由于超过百万级对象需要线程安全,可避免锁过多对***造成过高的内存和锁资源压力。如果大规模使用临界区锁,由于多线程竞争不断发生,使用本发明仅用很少的临界区锁可完成多线程的安全功能。

Description

一种大规模锁***实现方法、装置、存储介质和服务器
技术领域
本发明涉及大规模资源对象线程安全保护领域,具体涉及一种大规模锁***实现方法、装置、存储介质和服务器。
背景技术
锁是多任务操作***提供的一种重要资源,常见的有临界区、信号量、互斥量等多种形式,其核心功能是在并行程序设计领域,当两个或多个线程面临同时访问某一个资源(同一个变量、同一个内存块、同一个Socket句柄、同一个IO句柄等)的可能时,为避免发生读写冲突,需要对这些读写操作进行排他性保护,确保某个线程对这个资源进行操作时,其他线程处于等待状态。
在大型服务器开发领域,由于需要涉及对大规模的变量、内存对象、句柄对象等资源进行多线程、大并发的并行访问,这种高密集的资源访问,需要高效和海量的锁资源支持,才能保证数据访问的完整性和安全性,以及保证资源访问的效率。但是锁是一种***资源,每个进程允许持有的锁数量是有限的,大量使用锁资源,将会大规模消耗***的句柄资源和内存资源,严重影响服务进程的性能,甚至导致操作***因资源不足而崩溃。所以一般在大规模使用锁资源的服务器应用中,会通过以下几种方法来解决:
1、提升锁的保护范围,降低锁句柄的占用,使用一把锁保护一个完整的数据结构,比如一把锁保护一个数组、队列或链表中的所有数据。这对操作***资源占用很少,但会导致大并发访问时锁碰撞过于密集,大部分线程都消耗大量的时间在抢占锁上,访问效率很低。
2、使用自旋锁来对数据资源提供独立的锁保护,由于自旋锁工作在用户态,不占用操作***的句柄资源和内存资源,所以不会出现***资源不足的情况。但大规模的使用自旋锁,会大量占用CPU资源,特别是对于一些业务复杂、比较耗时的操作,使用自旋锁会严重影响服务器性能。
3、使用状态表来登记数据资源的加锁和解锁状态,从而实现数据资源锁保护,这种状态表一般使用Hash表或Bit-map表来实现。这种设计方法大量使用在数据库的行锁中,它可实现占用操作***资源不太多的情况下,有效降低锁冲突,可在一定程度上提高服务器性能。但这种设计方案中,需要通过查表来获取资源的锁状态,对性能有一定的影响,同时线程在抢占锁资源时,和自旋锁一样运行于用户态中,存在和自旋锁一样的缺点,很难在CPU占用和CPU利用率两者之间进行平衡。
上述三种方案都不完美,要么性能低下,要么资源浪费严重,二者很难折中,难以满足大型服务器领域中既兼顾性能又占用少量资源的针对海量数据的锁保护需求。
发明内容
本发明的目的在于针对上述现有技术中的问题,提供一种大规模锁***实现方法、装置、存储介质和服务器,能够使用很少的操作***资源(物理锁资源、内存等),提供大规模的锁资源供应用层使用,以实现高效的“小锁”应用模型,满足多任务环境下的高性能开发需求。
为了实现上述目的,本发明有如下的技术方案:
第一方面,本发明实施例提供了一种大规模锁***实现方法,包括以下步骤:
应用程序调用本软件模块应用程序调用接口,初始化锁池管理对象,应用程序调用接口接到访问请求,转到锁池管理层实现服务;
应用程序调用本软件模块应用程序调用接口,为需要进行锁保护的对象创建一个逻辑锁对象,应用程序调用接口接到访问请求,转到逻辑锁管理层实现服务;
应用程序调用本软件模块应用程序调用接口,准备持有锁,应用程序调用接口接到访问请求,转到逻辑锁操作层实现服务,如果请求的是临界区锁则执行lock()操作,如果是读写锁的读锁则执行rdlock()操作,写锁则执行wrlock()操作;
应用程序调用本软件模块应用程序调用接口,准备释放持有锁,应用程序调用接口接到访问请求,转到逻辑锁操作层实现服务,如果请求的是临界区锁则执行unlock()操作,如果是读写锁的读锁则执行rdunlock()操作,写锁则执行wrunlock()操作。
作为本发明大规模锁***实现方法的一种优选方案,在同一把***物理锁的保护下完成操作步骤,以保证操作步骤在执行过程中不被打断。
作为本发明大规模锁***实现方法的一种优选方案,所述的lock()操作执行条件为多个线程同时访问同一资源。
作为本发明大规模锁***实现方法的一种优选方案,所述的lock()操作执行步骤包括:首次提出加锁需求后,调用锁池接口创建一个全局的锁池,里面存放多个空闲锁等待使用;锁池接收加锁任务后,判断此资源是否为第一次发起加锁请求,如果是第一次发起加锁请求,锁池会主动分配给此资源一个空闲锁,并对此锁的引用计数值进行加一,然后进行上锁操作;如不是第一次发起加锁请求,锁池不会对此次请求分配新的空闲锁,仅在此资源原有锁的基础上进行引用计数值加一操作,用于表示此对象正在被多方使用。
作为本发明大规模锁***实现方法的一种优选方案,所述的unlock()操作执行条件为当前线程对资源使用完毕。
作为本发明大规模锁***实现方法的一种优选方案,所述的unlock()操作执行步骤包括:对此资源所占锁的引用计数值进行减1,并用其值与1进行判断;如果大于1则其它线程还有对此资源加锁的需求,此处不错任何处理;如果等于1则暂无后续抢占此资源的需求,无后续抢占此资源的需求时,归还此资源锁到锁池中,等待下一次加锁需求到来。
第二方面,本发明实施例还提供一种大规模锁***实现装置,包括:
初始化模块,用于应用程序调用本软件模块应用程序调用接口,初始化锁池管理对象,应用程序调用接口接到访问请求,转到锁池管理层实现服务;
逻辑锁创建模块,用于应用程序调用本软件模块应用程序调用接口,为需要进行锁保护的对象创建一个逻辑锁对象,应用程序调用接口接到访问请求,转到逻辑锁管理层实现服务;
加锁模块,用于应用程序调用本软件模块应用程序调用接口,准备持有锁,应用程序调用接口接到访问请求,转到逻辑锁操作层实现服务,如果请求的是临界区锁则执行lock()操作,如果是读写锁的读锁则执行rdlock()操作,写锁则执行wrlock()操作;
解锁模块,用于应用程序调用本软件模块应用程序调用接口,准备释放持有锁,应用程序调用接口接到访问请求,转到逻辑锁操作层实现服务,如果请求的是临界区锁则执行unlock()操作,如果是读写锁的读锁则执行rdunlock()操作,写锁则执行wrunlock()操作。
第三方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述的大规模锁***实现方法。
第四方面,本发明实施例还提供一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述的大规模锁***实现方法。
相较于现有技术,本发明至少具有如下的有益效果:服务器进程的线程数是有限的,少的几个线程,多的也只有几百个线程左右,所以,在服务器极端不出现线程冲突的情况下,服务器线程最多只会使用到几百个锁对象。即使是在服务器进程中大规模的使用锁资源,同一时间被访问到锁资源总是少数,其他大量的锁资源处于空闲状态,这其实是一种对***资源极大的浪费。如果服务器进程可以像***内存资源一样可以适时回收、重用,则可以达到使用很少的锁资源,实现大规模锁应用的目的。由于超过百万级对象需要线程安全,可避免锁过多对***造成过高的内存和锁资源压力。如果大规模使用临界区锁,由于多线程竞争不断发生,Event句柄也在不断被创建,如果进程超过16M的句柄数量时,进程可能无法运行。而当使用本发明设计的大规模锁***,仅用很少的临界区锁可完成多线程的安全功能。
附图说明
图1本发明实施例构建出的大规模锁***结构示意图;
图2本发明实施例大规模锁***实现方法的加锁流程示意图;
图3本发明实施例大规模锁***实现方法的解锁流程示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外,还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
作为大规模锁***的实现,其中最重要的就是锁资源的调度和利用,也就是其中加锁和解锁的这个过程。
参见图1,本发明构建出的大规模锁***结构,通过应用程序直接调用API接口,无需关系内部逻辑,逻辑锁管理层存储有若干个逻辑锁,通过逻辑锁对锁池中的锁进行拿取,通过锁池管理层与逻辑锁管理层进行交互,实现对锁池中锁的拿取操作。
应用程序调用接口:用于定义本模块的操作方法,供其他计算机编程语言调用,实现功能输出;
锁池管理层:用于提供基于池的锁资源回收、分配算法逻辑,实现锁资源重用;
逻辑锁管理层:用于定义一个逻辑锁对象,它不是一个真正的锁,而是一个逻辑锁的管理对象,它用于存储一个真实锁的对象指针和引用计数器。逻辑锁管理层提供create()、destroy()操作方法,用于创建和释放逻辑锁对象;
逻辑锁操作层:用于提供锁算法逻辑,为实现的每一把锁提供相对应锁类型的操作特性,比如临界区锁提供lock()、unlock()、trylock()操作,而读写锁提供rdlock()、rdunlock()、wrlock()、wrunlock()等操作。
本发明提出的大规模锁***实现方法,包括以下步骤:
应用程序调用本软件模块应用程序调用接口,初始化锁池管理对象,应用程序调用接口接到访问请求,转到锁池管理层实现服务;
应用程序调用本软件模块应用程序调用接口,为需要进行锁保护的对象创建一个逻辑锁对象,应用程序调用接口接到访问请求,转到逻辑锁管理层实现服务;
应用程序调用本软件模块应用程序调用接口,准备持有锁,应用程序调用接口接到访问请求,转到逻辑锁操作层实现服务,如果请求的是临界区锁则执行lock()操作,如果是读写锁的读锁则执行rdlock()操作,写锁则执行wrlock()操作;
应用程序调用本软件模块应用程序调用接口,准备释放持有锁,应用程序调用接口接到访问请求,转到逻辑锁操作层实现服务,如果请求的是临界区锁则执行unlock()操作,如果是读写锁的读锁则执行rdunlock()操作,写锁则执行wrunlock()操作。
上述所有动作都在同一把***物理锁保护下完成,以保证所有动作操作时不被打断,确保本软件模块自身的多线程安全性。
参见图2,所述的lock()操作执行条件为多个线程同时访问同一资源,为了保证数据的完整性,可靠性,安全性所提出的诉求。多人同时操作数据库中的同一个数据时,如果在不加锁的情况下,同一个数据存在被多人争抢的情况,这样就无法保证数据最终的完整性和可靠性,也对后面数据的使用安全性造成隐患。所述的lock()操作执行步骤包括:首次提出加锁需求后,调用锁池接口创建一个全局的锁池,里面存放多个空闲锁等待使用;锁池接收加锁任务后,判断此资源是否为第一次发起加锁请求,如果是第一次发起加锁请求,锁池会主动分配给此资源一个空闲锁,并对此锁的引用计数值进行加一,然后进行上锁操作;如不是第一次发起加锁请求,锁池不会对此次请求分配新的空闲锁,仅在此资源原有锁的基础上进行引用计数值加一操作,用于表示此对象正在被多方使用。
参见图3,所述的unlock()操作执行条件为当前线程对资源使用完毕,为了保证其他线程能够正常访问与处理本资源所提出的诉求。所述的unlock()操作执行步骤包括:对此资源所占锁的引用计数值进行减1,并用其值与1进行判断;如果大于1则其它线程还有对此资源加锁的需求,此处不错任何处理;如果等于1则暂无后续抢占此资源的需求,无后续抢占此资源的需求时,归还此资源锁到锁池中,等待下一次加锁需求到来。
本发明的另一实施例还提出一种大规模锁***实现装置,包括:
初始化模块,用于应用程序调用本软件模块应用程序调用接口,初始化锁池管理对象,应用程序调用接口接到访问请求,转到锁池管理层实现服务;
逻辑锁创建模块,用于应用程序调用本软件模块应用程序调用接口,为需要进行锁保护的对象创建一个逻辑锁对象,应用程序调用接口接到访问请求,转到逻辑锁管理层实现服务;
加锁模块,用于应用程序调用本软件模块应用程序调用接口,准备持有锁,应用程序调用接口接到访问请求,转到逻辑锁操作层实现服务,如果请求的是临界区锁则执行lock()操作,如果是读写锁的读锁则执行rdlock()操作,写锁则执行wrlock()操作;
解锁模块,用于应用程序调用本软件模块应用程序调用接口,准备释放持有锁,应用程序调用接口接到访问请求,转到逻辑锁操作层实现服务,如果请求的是临界区锁则执行unlock()操作,如果是读写锁的读锁则执行rdunlock()操作,写锁则执行wrunlock()操作。
本发明的另一实施例还提出一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述的大规模锁***实现方法。
本发明的另一实施例还提出一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述的大规模锁***实现方法。
示例性的,所述的计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在计算机可读存储介质中,并由所述处理器执行,以完成本申请所述大规模锁***实现方法中的步骤。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机可读指令段,该指令段用于描述所述计算机程序在服务器中的执行过程。
所述服务器可以是智能手机、笔记本、掌上电脑及云端服务器等计算设备。所述服务器可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,所述服务器还可以包括更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述服务器还可以包括输入输出设备、网络接入设备、总线等。
所述处理器可以是中央处理单元(CentraL Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(DigitaL SignaL Processor,DSP)、专用集成电路(AppLication Specific Integrated Circuit,ASIC)、现成可编程门阵列(FieLd-ProgrammabLe Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器可以是所述服务器的内部存储单元,例如服务器的硬盘或内存。所述存储器也可以是所述服务器的外部存储设备,例如所述服务器上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure DigitaL,SD)卡,闪存卡(FLash Card)等。进一步地,所述存储器还可以既包括所述服务器的内部存储单元也包括外部存储设备。所述存储器用于存储所述计算机可读指令以及所述服务器所需的其他程序和数据。所述存储器还可以用于暂时地存储已经输出或者将要输出的数据。
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述***中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (9)

1.一种大规模锁***实现方法,其特征在于,包括以下步骤:
应用程序调用本软件模块应用程序调用接口,初始化锁池管理对象,应用程序调用接口接到访问请求,转到锁池管理层实现服务;
应用程序调用本软件模块应用程序调用接口,为需要进行锁保护的对象创建一个逻辑锁对象,应用程序调用接口接到访问请求,转到逻辑锁管理层实现服务;
应用程序调用本软件模块应用程序调用接口,准备持有锁,应用程序调用接口接到访问请求,转到逻辑锁操作层实现服务,如果请求的是临界区锁则执行lock()操作,如果是读写锁的读锁则执行rdlock()操作,写锁则执行wrlock()操作;
应用程序调用本软件模块应用程序调用接口,准备释放持有锁,应用程序调用接口接到访问请求,转到逻辑锁操作层实现服务,如果请求的是临界区锁则执行unlock()操作,如果是读写锁的读锁则执行rdunlock()操作,写锁则执行wrunlock()操作。
2.根据权利要求1所述的大规模锁***实现方法,其特征在于:在同一把***物理锁的保护下完成操作步骤,以保证操作步骤在执行过程中不被打断。
3.根据权利要求1所述的大规模锁***实现方法,其特征在于:所述的lock()操作执行条件为多个线程同时访问同一资源。
4.根据权利要求1所述的大规模锁***实现方法,其特征在于,所述的lock()操作执行步骤包括:首次提出加锁需求后,调用锁池接口创建一个全局的锁池,里面存放多个空闲锁等待使用;锁池接收加锁任务后,判断此资源是否为第一次发起加锁请求,如果是第一次发起加锁请求,锁池会主动分配给此资源一个空闲锁,并对此锁的引用计数值进行加一,然后进行上锁操作;如不是第一次发起加锁请求,锁池不会对此次请求分配新的空闲锁,仅在此资源原有锁的基础上进行引用计数值加一操作,用于表示此对象正在被多方使用。
5.根据权利要求1所述的大规模锁***实现方法,其特征在于:所述的unlock()操作执行条件为当前线程对资源使用完毕。
6.根据权利要求1所述的大规模锁***实现方法,其特征在于,所述的unlock()操作执行步骤包括:对此资源所占锁的引用计数值进行减1,并用其值与1进行判断;如果大于1则其它线程还有对此资源加锁的需求,此处不错任何处理;如果等于1则暂无后续抢占此资源的需求,无后续抢占此资源的需求时,归还此资源锁到锁池中,等待下一次加锁需求到来。
7.一种大规模锁***实现装置,其特征在于,包括:
初始化模块,用于应用程序调用本软件模块应用程序调用接口,初始化锁池管理对象,应用程序调用接口接到访问请求,转到锁池管理层实现服务;
逻辑锁创建模块,用于应用程序调用本软件模块应用程序调用接口,为需要进行锁保护的对象创建一个逻辑锁对象,应用程序调用接口接到访问请求,转到逻辑锁管理层实现服务;
加锁模块,用于应用程序调用本软件模块应用程序调用接口,准备持有锁,应用程序调用接口接到访问请求,转到逻辑锁操作层实现服务,如果请求的是临界区锁则执行lock()操作,如果是读写锁的读锁则执行rdlock()操作,写锁则执行wrlock()操作;
解锁模块,用于应用程序调用本软件模块应用程序调用接口,准备释放持有锁,应用程序调用接口接到访问请求,转到逻辑锁操作层实现服务,如果请求的是临界区锁则执行unlock()操作,如果是读写锁的读锁则执行rdunlock()操作,写锁则执行wrunlock()操作。
8.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的大规模锁***实现方法。
9.一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述的大规模锁***实现方法。
CN202111189055.8A 2021-10-12 2021-10-12 一种大规模锁***实现方法、装置、存储介质和服务器 Pending CN113961364A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111189055.8A CN113961364A (zh) 2021-10-12 2021-10-12 一种大规模锁***实现方法、装置、存储介质和服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111189055.8A CN113961364A (zh) 2021-10-12 2021-10-12 一种大规模锁***实现方法、装置、存储介质和服务器

Publications (1)

Publication Number Publication Date
CN113961364A true CN113961364A (zh) 2022-01-21

Family

ID=79463689

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111189055.8A Pending CN113961364A (zh) 2021-10-12 2021-10-12 一种大规模锁***实现方法、装置、存储介质和服务器

Country Status (1)

Country Link
CN (1) CN113961364A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114528113A (zh) * 2022-04-24 2022-05-24 广州中望龙腾软件股份有限公司 一种线程锁管理***、方法、设备和可读介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114528113A (zh) * 2022-04-24 2022-05-24 广州中望龙腾软件股份有限公司 一种线程锁管理***、方法、设备和可读介质
CN114528113B (zh) * 2022-04-24 2022-08-23 广州中望龙腾软件股份有限公司 一种线程锁管理***、方法、设备和可读介质

Similar Documents

Publication Publication Date Title
Burns et al. A review of Ada tasking
CN102262559B (zh) 一种资源共享的方法及***
CN108572876B (zh) 一种读写锁的实现方法及装置
US20110265098A1 (en) Message Passing with Queues and Channels
CN113205417B (zh) 一种面向联盟链的交易并行处理方法及***
EP3230860B1 (en) Technologies for efficient synchronization barriers with work stealing support
US20080201712A1 (en) Method and System for Concurrent Message Processing
CN107562685B (zh) 一种基于延时补偿的多核处理器核心间数据交互的方法
US10248471B2 (en) Lockless execution in read-mostly workloads for efficient concurrent process execution on shared resources
CN111857993A (zh) 一种内核态调用用户态函数的方法
CN115509986A (zh) 核间通信方法、电子设备及存储介质
CN111897666A (zh) 用于多进程之间通信的方法、设备及***
CN114168271A (zh) 一种任务调度方法、电子设备及存储介质
US20080243887A1 (en) Exclusion control
CN113010265A (zh) Pod的调度方法、调度器、存储插件及***
US10360079B2 (en) Architecture and services supporting reconfigurable synchronization in a multiprocessing system
CN113961364A (zh) 一种大规模锁***实现方法、装置、存储介质和服务器
CN109558241A (zh) 一种获取自旋锁的方法及装置
Fich et al. On the inherent weakness of conditional synchronization primitives
US20140115215A1 (en) Tiered locking of resources
JP7346649B2 (ja) 同期制御システムおよび同期制御方法
CN112346879B (zh) 进程管理方法、装置、计算机设备及存储介质
US7539678B2 (en) Systems and methods for controlling access to an object
CN113254506A (zh) 数据处理方法、装置、计算机设备及存储介质
US9619277B2 (en) Computer with plurality of processors sharing process queue, and process dispatch processing method

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