CN114661481B - 一种单进程中多线程多互斥量间的控制方法以及终端 - Google Patents
一种单进程中多线程多互斥量间的控制方法以及终端 Download PDFInfo
- Publication number
- CN114661481B CN114661481B CN202210571806.0A CN202210571806A CN114661481B CN 114661481 B CN114661481 B CN 114661481B CN 202210571806 A CN202210571806 A CN 202210571806A CN 114661481 B CN114661481 B CN 114661481B
- Authority
- CN
- China
- Prior art keywords
- thread
- semaphore
- resource
- mutual exclusion
- threads
- 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
- 238000000034 method Methods 0.000 title claims abstract description 67
- 230000008569 process Effects 0.000 title claims description 36
- 230000007717 exclusion Effects 0.000 claims abstract description 61
- 238000012163 sequencing technique Methods 0.000 claims abstract description 11
- 230000001960 triggered effect Effects 0.000 claims description 6
- 241000695274 Processa Species 0.000 abstract 1
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000001364 causal effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Cable Transmission Systems, Equalization Of Radio And Reduction Of Echo (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种单进程中多线程多互斥量间的控制方法以及终端,该方法包括:S1:获取线程的个数N,进行排序,记线程为Tn;S2:初始化互斥信号量,对互斥信号量进行排序,记互斥信号量为Am,对前(m‑1)个Am进行加锁;S3:将线程Tn加入到线程池,向线程Tn中传递参数i,启动所有线程;S4:判断i是否等于1,若是,则对线程T1引入互斥信号量Am,执行线程T1的任务,并对互斥信号量A1解锁,若否,则对线程Tn引入互斥信号量Am‑1,执行线程Tn的任务,并对互斥信号量An解锁。在本发明中,通过互斥信号量驱使多线程按顺序有序进行,更能体现合理公平性的原则。
Description
技术领域
本发明涉及信息处理技术领域,尤其涉及一种单进程中多线程多互斥量间的控制方法以及终端。
背景技术
现代操作***采用多道程序设计机制,多个进程可以并发执行,每个进程下又包含有多个线程,CPU在线程之间来回切换,共享某些资源,提高了资源的利用率,但这也使得处理并发执行的多个线程之间的冲突和相互制约关系成为了一道难题。如果对并发线程的调度不当,则可能会出现运行结果与切换时间有关的情况,令结果不可再现,影响***的效率和正确性,严重时还会使***直接崩溃。需要一些机制来控制并发线程间的这种相互制约关系。
如中国专利CN105511969A一种跨进程的线程间进行互斥的方法,包括以下步骤:多个线程竞争互斥信息,胜出的线程初始化互斥信息;当胜出的线程获得互斥信息之后,利用互斥信息对临界区进行加锁操作;进行加锁操作后,线程获得互斥信息的锁,访问共享资源;同时,其它线程进行等待;线程使用完共享资源之后,离开临界区,进行解锁操作;互斥信息继续被其它线程竞争,重复上述步骤。但该专利仍处在以下问题:第一,多个线程之间的执行顺序没有任何规律,明显处于不可控的无序状态;第二,无法用于执行存在明显因果关系的多个线程,导致线程的处理会异常耗时,且效率极低,容易出现***死机异常退出等问题。
发明内容
为了克服现有技术的不足,本发明的目的之一在于提供一种单进程中多线程多互斥量间的控制方法,其能解决多个线程之间的执行顺序没有任何规律,明显处于不可控的无序状态的问题。
本发明的目的之二在于提供一种单进程中多线程多互斥量间的控制终端,其能解决多个线程之间的执行顺序没有任何规律,明显处于不可控的无序状态的问题。
为了达到上述目的之一,本发明所采用的技术方案如下:
一种单进程中多线程多互斥量间的控制方法,包括以下步骤:
S1:获取进程中的线程的个数N,并根据优先级对线程进行排序,记线程为Tn,其中n为排序中的序号;
S2:初始化N个互斥信号量,对互斥信号量进行排序,记互斥信号量为An,对排序中的前(N-1)个An进行资源加锁;
S3:将N个线程Tn逐一加入到线程池中,并向每个线程Tn中传递参数i,启动所有线程Tn,其中i=n;
S4:判断i是否等于1,若是,则执行S5,若否,则执行S6;
S5:对线程T1的内部引入未进行资源加锁的互斥信号量An,执行完成线程T1的任务,并对互斥信号量A1进行资源解锁;
S6:对线程Tn的内部引入互斥信号量An-1,执行完成线程Tn的任务,并对互斥信号量An进行资源解锁。
优选的,执行完成任意一个线程的任务后,还包括以下步骤:
S7:获取预先设置的线程退出条件:ThreadExit=K,以及线程执行完成次数Q,其中Q的初始值为0;
S8:对线程执行完成次数Q进行累计+1操作,获得线程执行当前次数B;
S9:判断B是否等于K,若是,则结束程序,若否,则对互斥信号量An进行资源解锁。
优选的,所述S5具体由以下步骤实现:
S51:初始化临时变量参数Atemp,并对线程T1的内部引入未进行资源加锁的互斥信号量An,赋值临时变量参数Atemp=互斥信号量An;
S52:判断临时变量参数Atemp是否处于资源加锁状态;若是,则线程等待执行,重新执行S52,若否,则对临时变量参数Atemp进行资源加锁,并执行完成线程T1的任务;
S53:对互斥信号量A1进行资源解锁,触发执行下一线程,并返回S52。
优选的,所述S6具体由以下步骤实现:
S61:初始化临时变量参数Atemp,并对线程Tn的内部引入互斥信号量An-1,赋值临时变量参数Atemp=互斥信号量An-1;
S62:判断临时变量参数Atemp是否处于资源加锁状态;若是,则线程等待执行,重新执行S62,若否,则对临时变量参数Atemp进行资源加锁,并执行完成线程Tn的任务;
S63:对互斥信号量An进行资源解锁,触发执行下一线程,并返回S62。
优选的,所述S63具体由以下步骤实现:
对互斥信号量An进行资源解锁,触发执行线程Tn+1,并返回S62。
优选的,所述S63具体由以下步骤实现:
对互斥信号量An进行资源解锁,触发执行线程T1,并返回S62。
为了达到上述目的之二,本发明所采用的技术方案如下:
一种单进程中多线程多互斥量间的控制终端,包括储存器和处理器;
储存器,用于储存程序指令;
处理器,用于运行所述程序指令,以执行如上述的单进程中多线程多互斥量间的控制方法
相比现有技术,本发明的有益效果在于:通过获取进程中的线程的个数N,并根据优先级对线程进行排序,同时初始化N个互斥信号量,对互斥信号量进行排序,对排序中的前(N-1)个互斥信号量进行资源加锁;再将N个线程逐一加入到线程池中,然后将未进行资源加锁的互斥信号量引入到线程T1的内部,通过对未进行资源加锁的互斥信号量加锁,执行线程T1的任务,避免***在同一时间内重复执行多个线程T1的任务,形成“死锁”的情况,再对互斥信号量A1进行资源解锁,并将互斥信号量A1引入到线程T2中,然后对互斥信号量A2进行资源加锁,执行线程T2的任务,避免***在同一时间内重复执行多个线程T2的任务形成“死锁”的情况,如此类推,驱使单进程中的多个线程能够按预设顺序执行,充分体现合理公平性的原则,实现高效有序处理多事务的问题。
附图说明
图1为本发明中所述的单进程中多线程多互斥量间的控制方法的流程图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
下面,结合附图以及具体实施方式,对本发明做进一步描述:
在本发明中,引入一个线程同步的辅助类-Semaphore(在本申请中将其记为A),可以维护当前访问自身的线程个数,一般称为信号量,可以用来控制同时访问特定资源的线程数量,通过协调各个线程,以保证合理的使用资源,具体的,信号量构造为Semaphore(intinitialCount,int maximumCount),可以认为Semaphore为一个资源信号量的容器,initialCount和maximumCount两个参数分别代表初始资源数和最大资源数。所谓最大资源数maximumCount,是指Semaphore容器中所包含的所有资源的数量。这个最大资源数maximumCount中,包括当前可用的资源和当前尚未释放的资源。而初始资源数initialCount是指在程序初始状态时,Semaphore释放出了多少个可以直接被线程使用的资源。尚未被释放的资源 = maximumCount - initialCount。在本发明中,初始化构造为A(1,1),即初始资源和最大资源数都设置为1。Semaphore常用的方法有两个:WaitOne()和Release():(1).WaitOne()方法可以从Semaphore这个资源容器中的现有可用资源中,取出一个资源(从初始资源中取出资源,不是从最大资源数中取出资源),初始资源为1,取完一个资源后,无资源可用了,阻止当前线程执行,线程就会等待,此为加锁;(2).Release()可以从Semaphore这个资源容器中释放1个资源,Release()不但可以释放自己的资源,还可以释放Semaphore在初始时不可用的资源。比如:资源容器Semaphore(1,1)的总资源为1,初始可用资源为1,使用Release()方法可以将初始资源释放出一个,还可以将剩下(1-1)个不可用的资源释放出来,使得Semaphore有1可用资源;此为减锁。Semaphore、WaitOne、Release三者组成了一个互斥信号量的完整体系结构。
实施例一
如图1所示,一种单进程中多线程多互斥量间的控制方法,包括以下步骤:
S1:获取进程中的线程的个数N,并根据优先级对线程进行排序,记线程为Tn,其中n为线程在排序中的序号;
具体的,获取单个进程里所有线程的个数N,根据预先的优先级对线程进行排序,记线程为Tn,其中n为排序中的序号,即将线程记为:T1、T2、T3、T4…… Tn。
S2:初始化N个互斥信号量,对互斥信号量进行排序,记互斥信号量为An,对排序中的前(N-1)个An进行资源加锁;
具体的,将N个互斥信号量进行初始化,并给每个互斥信号量设置(初始资源数=1,最大可用资源数=1),同时对互斥信号量进行排序,记互斥信号量为An,即将互斥信号量记为A1、A2、A3…… An,在对排序中的前(N-1)个An进行资源加锁,相当于对A1、A2、A3…… An-1进行资源加锁,此时有且仅有An没有进行加锁动作,优选的,互斥信号量的数量不少于线程的个数。
S3:将N个线程Tn逐一加入到线程池中,并向每个线程Tn中传递参数i,启动所有线程Tn,其中i=n;
具体的,将所有Tn逐一加入到线程池中,可以减少在创建和销毁线程上所花的时间,以及减少***资源的开销,对每个进入线程池的线程中传递参数i,然后启动所有线程。
S4:判断i是否等于1,若是,则执行S5,若否,则执行S6;
具体的,获取每个线程的参数i,进而判断i是否等于1,若是,则执行S5,若否,则执行S6。
S5:对线程T1的内部引入未进行资源加锁的互斥信号量An,执行完成线程T1的任务,并对互斥信号量A1进行资源解锁;
具体的,将未进行资源加锁的互斥信号量An引入到线程T1,此时其他的互斥信号量处于资源加锁的状态,以使得线程T1为第一开始执行的线程,在本实施例中,所述S5具体由以下步骤实现:
S51:初始化临时变量参数Atemp,并对线程T1的内部引入未进行资源加锁的互斥信号量An,赋值临时变量参数Atemp=互斥信号量An;
具体的,增加一个临时变量参数Atemp,并对临时变量参数Atemp进行初始化,同时将未进行资源加锁的互斥信号量An引入到线程T1的内部,再赋值临时变量参数Atemp=互斥信号量An,使得临时变量参数Atemp有一个可用的资源。
S52:判断临时变量参数Atemp是否处于资源加锁状态;若是,则线程等待执行,重新执行S52,若否,则对临时变量参数Atemp进行资源加锁,并执行完成线程T1的任务;
具体的,判断临时变量参数Atemp是否处于资源加锁状态,即判断临时变量参数Atemp是否有可用的资源,若临时变量参数Atemp处于资源加锁状态,则该线程的任务继续等待执行,并且返回S52,若临时变量参数Atemp不处于资源加锁状态,则对临时变量参数Atemp进行资源加锁(即An也被资源加锁),同时执行并完成线程T1的任务,避免在执行线程T1的任务时,由于An没被资源加锁,而重复线程T1的任务,即同一时间内多个线程T1的任务在执行,造成死锁。
使得***执行并完成线程T1的任务。
S53:对互斥信号量A1进行资源解锁,触发执行下一线程,并返回S52。
具体的,线程T1的任务被执行完成后,对互斥信号量A1进行资源解锁,进而触发执行下一线程,例如线程T2,并返回S52,直至An被减锁之后,再次执行线程T1的任务。
S6:对线程Tn的内部引入互斥信号量An-1,执行完成线程Tn的任务,并对互斥信号量An进行资源解锁。
具体的,n为正整数,并且在S6中的n应当大于1,所以此时线程Tn可以为T2、T3、T4……Tn,同时互斥信号量An-1可以为A1、A2、A3……An-1,在本实施例中,所述S6具体由以下步骤实现:
S61:初始化临时变量参数Atemp,并对线程Tn的内部引入互斥信号量An-1,赋值临时变量参数Atemp=互斥信号量An-1;
具体的,增加一个临时变量参数Atemp,并对临时变量参数Atemp进行初始化,同时将互斥信号量An-1引入到线程Tn的内部,再赋值临时变量参数Atemp=互斥信号量An-1;在本实施例中,未进行资源加锁的互斥信号量An添加到线程T1中,使得线程T1优先执行,当线程T1执行完成后,对互斥信号量A1进行解锁,再将互斥信号量A1引入到线程T2的内部,如此类推,使得互斥信号量的解锁顺序为:An- A1- A2-…- An-1,线程的执行顺序为:T1-T2-T3-…- Tn,实现限定线程的执行顺序。
S62:判断临时变量参数Atemp是否处于资源加锁状态;若是,则线程等待执行,重新执行S62,若否,则对临时变量参数Atemp进行资源加锁,并执行完成线程Tn的任务;
具体的,判断临时变量参数Atemp是否处于资源加锁状态,即判断临时变量参数Atemp是否有可用的资源,若临时变量参数Atemp处于资源加锁状态,则该线程的任务继续等待执行,并且返回S62,若临时变量参数Atemp不处于资源加锁状态,则对临时变量参数Atemp进行资源加锁(即An-1也被资源加锁),同时执行并完成线程Tn的任务,避免在执行线程Tn的任务时,由于An-1没被资源加锁,而重复线程Tn的任务,即同一时间内多个线程Tn的任务在执行,造成死锁,使得线程的执行顺序只能为:T1-T2-T3-…- Tn,上一线程未执行完成,则下一线程不能执行。
S63:对互斥信号量An进行资源解锁,触发执行下一线程,并返回S62。
具体的,线程Tn的任务被执行完成后,对互斥信号量An进行资源解锁,进而触发执行下一线程,例如线程T3,并返回S52,直至An-1被减锁之后,再次执行线程Tn的任务,在本实施例,所述S63具体由以下步骤实现:
对互斥信号量An进行资源解锁,触发执行线程Tn+1,并返回S62。
优选的,当n大于1时,线程Tn执行完成后,对互斥信号量An进行资源解锁,触发执行线程Tn+1,具体的,线程T2执行完成之后,对互斥信号量A2进行资源解锁,然后触发线程T3执行,当线程T3执行完成之后,对互斥信号量A3进行资源解锁,如此类推。
优选的,所述S63具体还可由以下步骤实现:
对互斥信号量An进行资源解锁,触发执行线程T1,并返回S62。
优选的,当第N个线程Tn执行完成后,即N个线程均已执行完成一次,则对第N个互斥信号量An进行资源解锁,进而触发执行线程T1,即重新安照执行顺序:T1-T2-T3-…- Tn开始执行新的一轮循环。
优选的,执行完成任意一个线程的任务后,还包括以下步骤:
S7:获取预先设置的线程退出条件:ThreadExit=K,以及线程执行完成次数Q,其中Q的初始值为0;
具体的,预选设置线程退出条件:ThreadExit=K中的K的值,每当执行完成任意一个线程的任务后,获取线程退出条件:ThreadExit=K,以及线程执行完成次数Q
S8:对线程执行完成次数Q进行累计+1操作,获得线程执行当前次数B;
具体的,每当执行完成任意一个线程的任务后,对线程执行完成次数Q进行累计+1操作,即线程执行当前次数B=Q+1,。
S9:判断B是否等于K,若是,则结束程序,若否,则对互斥信号量An进行资源解锁。
具体的,当B等于K,则表示当前符合线程退出条件:ThreadExit=K,结束程序,如当B小于K,则对互斥信号量An进行资源解锁,进而触发执行下一线程。
在本实施例中,若进程中的线程为3个(T1、T2、T3),则初始化3个互斥信号量(A1、A2、A3),对A1和A2进行资源加锁,将T1、T2、T3逐一加入到线程池中,并向每个线程Tn中传递参数i(i=1、2、3),启动所有线程,即此时T1、T2、T3全部处于启动状态,但是并未执行任务,然后将A3添加到T1中,将A1添加到T2中,将A2添加到T3中,再对A3进行加锁,使得***执行并完成一次T1的任务,同时判断B是否等于K,此时B=0+1,若K的值等于1,则结束程序,若K大于1,则对A1解锁,将A1添加到T2中,再对A1进行加锁,使得***执行并完成一次T2的任务,同时判断B是否等于K,此时B=1+1,若K的值等于2,则结束程序,若K大于2,则对A2解锁,将A2添加到T3中,再对A2进行加锁,使得***执行并完成一次T3的任务,同时判断B是否等于K,此时B=2+1,若K的值等于3,则结束程序,若K大于3,则对A3解锁,再对A3进行加锁,使得***执行并完成一次T1的任务,其中线程(T1、T2、T3)是同步执行,且是互斥的,在保证性能高效的条件下,避免了线程的阻塞和死锁。同时,线程处理的工作任务顺序,是严格按照设定的要求执行的,得到的结果也是所有线程间相互协作处理后的结果。
实施例二:
一种单进程中多线程多互斥量间的控制终端,包括储存器和处理器;
储存器,用于储存程序指令;
处理器,用于运行所述程序指令,以执行如实施例一所述的单进程中多线程多互斥量间的控制方法。
对本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及形变,而所有的这些改变以及形变都应该属于本发明权利要求的保护范围之内。
Claims (5)
1.一种单进程中多线程多互斥量间的控制方法,其特征在于,包括以下步骤:
S1:获取进程中的线程的个数N,并根据优先级对线程进行排序,记线程为Tn,其中n为排序中的序号;
S2:初始化N个互斥信号量,对互斥信号量进行排序,记互斥信号量为An,对排序中的前(N-1)个An进行资源加锁;
S3:将N个线程Tn逐一加入到线程池中,并向每个线程Tn中传递参数i,启动所有线程Tn,其中i=n;
S4:判断i是否等于1,若是,则执行S5,若否,则执行S6;
S5:对线程T1的内部引入未进行资源加锁的互斥信号量An,执行完成线程T1的任务,并对互斥信号量A1进行资源解锁;
S6:对线程Tn的内部引入互斥信号量An-1,执行完成线程Tn的任务,并对互斥信号量An进行资源解锁;
执行完成任意一个线程的任务后,还包括以下步骤:
S7:获取预先设置的线程退出条件:ThreadExit=K,以及线程执行完成次数Q,其中Q的初始值为0;
S8:对线程执行完成次数Q进行累计+1操作,获得线程执行当前次数B;
S9:判断B是否等于K,若是,则结束程序,若否,则对互斥信号量An进行资源解锁;
所述S5具体由以下步骤实现:
S51:初始化临时变量参数Atemp,并对线程T1的内部引入未进行资源加锁的互斥信号量An,赋值临时变量参数Atemp=互斥信号量An;
S52:判断临时变量参数Atemp是否处于资源加锁状态;若是,则线程等待执行,重新执行S52,若否,则对临时变量参数Atemp进行资源加锁,并执行完成线程T1的任务;
S53:对互斥信号量A1进行资源解锁,触发执行下一线程,并返回S52。
2.如权利要求1所述的单进程中多线程多互斥量间的控制方法,其特征在于,所述S6具体由以下步骤实现:
S61:初始化临时变量参数Atemp,并对线程Tn的内部引入互斥信号量An-1,赋值临时变量参数Atemp=互斥信号量An-1;
S62:判断临时变量参数Atemp是否处于资源加锁状态;若是,则线程等待执行,重新执行S62,若否,则对临时变量参数Atemp进行资源加锁,并执行完成线程Tn的任务;
S63:对互斥信号量An进行资源解锁,触发执行下一线程,并返回S62。
3.如权利要求2所述的单进程中多线程多互斥量间的控制方法,其特征在于,所述S63具体由以下步骤实现:
对互斥信号量An进行资源解锁,触发执行线程Tn+1,并返回S62。
4.如权利要求2所述的单进程中多线程多互斥量间的控制方法,其特征在于,所述S63具体由以下步骤实现:
对互斥信号量An进行资源解锁,触发执行线程T1,并返回S62。
5.一种单进程中多线程多互斥量间的控制终端,其特征在于:包括储存器和处理器;
储存器,用于储存程序指令;
处理器,用于运行所述程序指令,以执行如权利要求1-4任意一项所述的单进程中多线程多互斥量间的控制方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210571806.0A CN114661481B (zh) | 2022-05-25 | 2022-05-25 | 一种单进程中多线程多互斥量间的控制方法以及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210571806.0A CN114661481B (zh) | 2022-05-25 | 2022-05-25 | 一种单进程中多线程多互斥量间的控制方法以及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114661481A CN114661481A (zh) | 2022-06-24 |
CN114661481B true CN114661481B (zh) | 2022-09-06 |
Family
ID=82038400
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210571806.0A Active CN114661481B (zh) | 2022-05-25 | 2022-05-25 | 一种单进程中多线程多互斥量间的控制方法以及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114661481B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112486694A (zh) * | 2020-11-30 | 2021-03-12 | 山东浪潮通软信息科技有限公司 | 一种基于Redis的网络锁处理方法及设备 |
CN114461409A (zh) * | 2022-01-13 | 2022-05-10 | 北京特立信电子技术股份有限公司 | 一种互斥信号量异常阻塞辅助分析方法、***及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6237019B1 (en) * | 1998-03-18 | 2001-05-22 | International Business Machines Corporation | Method and apparatus for performing a semaphore operation |
US7454753B2 (en) * | 2001-06-27 | 2008-11-18 | International Business Machines Corporation | Semaphore management subsystem for use with multi-thread processor systems |
JP2007179190A (ja) * | 2005-12-27 | 2007-07-12 | Mitsubishi Electric Corp | セマフォ管理方法、およびセマフォ管理プログラム |
CN105511969B (zh) * | 2015-11-25 | 2020-05-19 | 中国船舶工业***工程研究院 | 一种跨进程的线程间进行互斥的方法 |
CN111913809B (zh) * | 2020-07-28 | 2024-03-19 | 阿波罗智能技术(北京)有限公司 | 多线程场景下的任务执行方法、装置、设备和存储介质 |
-
2022
- 2022-05-25 CN CN202210571806.0A patent/CN114661481B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112486694A (zh) * | 2020-11-30 | 2021-03-12 | 山东浪潮通软信息科技有限公司 | 一种基于Redis的网络锁处理方法及设备 |
CN114461409A (zh) * | 2022-01-13 | 2022-05-10 | 北京特立信电子技术股份有限公司 | 一种互斥信号量异常阻塞辅助分析方法、***及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114661481A (zh) | 2022-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8966491B2 (en) | System and method for implementing NUMA-aware reader-writer locks | |
US8020166B2 (en) | Dynamically controlling the number of busy waiters in a synchronization object | |
US8930584B2 (en) | System and method for providing a linearizable request manager | |
US5404521A (en) | Opportunistic task threading in a shared-memory, multi-processor computer system | |
US20120192194A1 (en) | Lock Free Acquisition and Release of a Semaphore in a Multi-Core Processor Environment | |
US6820263B1 (en) | Methods and system for time management in a shared memory parallel processor computing environment | |
EP3151116A1 (en) | Vehicle control apparatus | |
CN114661481B (zh) | 一种单进程中多线程多互斥量间的控制方法以及终端 | |
KR100850387B1 (ko) | 패시브 스레드 및 액티브 세마포어를 갖는 처리 아키텍쳐 | |
CN112506821B (zh) | 一种***总线接口请求仲裁方法及相关组件 | |
CN112148480A (zh) | 基于多线程的任务处理方法、装置、设备及存储介质 | |
Nemitz et al. | Multiprocessor real-time locking protocols for replicated resources | |
CN101189579A (zh) | 基于行为模型的多线程体系结构 | |
US20030131168A1 (en) | Ensuring fairness in a multiprocessor environment using historical abuse recongnition in spinlock acquisition | |
US11200098B2 (en) | Reduction of interrupt service latency in multi-processor systems | |
Aggarwal et al. | Lock-free and wait-free slot scheduling algorithms | |
CN115756856A (zh) | 一种基于多核处理器访问的自旋锁硬件及方法 | |
Hasenfratz et al. | Transactional memory: How to perform load adaption in a simple and distributed manner | |
CN116204303A (zh) | 一种可优化中断延迟的自旋锁的实现方法 | |
US11119831B2 (en) | Systems and methods for interrupting latency optimized two-phase spinlock | |
JPH07319716A (ja) | 計算機システムの資源の排他制御方式 | |
JPH0895807A (ja) | タスク実行制御方法 | |
CN115061779B (zh) | 一种用户态虚拟机的内核锁管理方法及装置 | |
JP2747098B2 (ja) | 共有資源の排他制御方式 | |
CN115934287B (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 | ||
CP03 | Change of name, title or address |
Address after: No. 56 Nanli East Road, Shiqi Town, Panyu District, Guangzhou City, Guangdong Province, 510000 Patentee after: Guangdong Baolun Electronics Co.,Ltd. Address before: No.19 Chuangyuan Road, Zhongcun street, Panyu District, Guangzhou, Guangdong 510000 Patentee before: GUANGZHOU ITC ELECTRONIC TECHNOLOGY Co.,Ltd. |
|
CP03 | Change of name, title or address |