CN110716755B - 一种线程退出方法、装置、设备及可读存储介质 - Google Patents

一种线程退出方法、装置、设备及可读存储介质 Download PDF

Info

Publication number
CN110716755B
CN110716755B CN201910972941.4A CN201910972941A CN110716755B CN 110716755 B CN110716755 B CN 110716755B CN 201910972941 A CN201910972941 A CN 201910972941A CN 110716755 B CN110716755 B CN 110716755B
Authority
CN
China
Prior art keywords
thread
exit
barrier
threads
state
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
Application number
CN201910972941.4A
Other languages
English (en)
Other versions
CN110716755A (zh
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.)
Zhejiang Nuonuo Network Technology Co ltd
Original Assignee
Zhejiang Nuonuo Network 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 Zhejiang Nuonuo Network Technology Co ltd filed Critical Zhejiang Nuonuo Network Technology Co ltd
Priority to CN201910972941.4A priority Critical patent/CN110716755B/zh
Publication of CN110716755A publication Critical patent/CN110716755A/zh
Application granted granted Critical
Publication of CN110716755B publication Critical patent/CN110716755B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F9/524Deadlock detection or avoidance
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开了一种线程退出方法、装置、设备及可读存储介质。本申请公开的方法包括:接收线程退出命令;确定到达第一屏障的第一线程,以及未到达第一屏障的第二线程;在第二线程退出时,利用第二屏障阻塞第二线程,以唤醒第一线程和第二线程;控制被唤醒后的第一线程和第二线程按照线程退出命令同步退出。本申请在第二线程的退出流程中设置了第二屏障,在接收到线程退出命令后,第二线程便可在退出时遇到第二屏障,此时第一线程和第二线程均到达屏障,因此可被唤醒,并按照线程退出命令退出,从而实现了线程的同步退出,避免了死锁情况的发生。相应地,本申请公开的一种线程退出装置、设备及可读存储介质,也同样具有上述技术效果。

Description

一种线程退出方法、装置、设备及可读存储介质
技术领域
本申请涉及计算机技术领域,特别涉及一种线程退出方法、装置、设备及可读存储介质。
背景技术
在现有技术中,一般通过屏障协调多个线程同步执行。具体为:当线程运行到达屏障时会处于休眠状态,以等待其他线程;待其他线程均运行到达该屏障后,所有到达该屏障的线程才被唤醒,从而可执行下一处理流程。
但是,屏障在协调多个线程同步执行的过程中,却引入了另一个问题。假设有两个线程(A和B)同步执行,当前只有A线程运行到达屏障,而B线程还未到达屏障,此时接收到线程退出命令。这种情况下,B线程可以按照线程退出命令直接退出,而A线程由于进入休眠状态,导致无法按照线程退出命令退出,所以会导致A无法退出。
需要说明的是,线程运行到达屏障后处于休眠状态,所以无法执行线程退出命令。又由于未到达屏障的线程已按照线程退出命令退出,所以无法满足线程被唤醒的条件,因此导致A线程一直处于休眠状态,从而产生死锁。死锁指在本申请中用于表示:线程一直阻塞在屏障处,不能继续往下运行的状态。
因此,在接收到线程退出命令时,如何使多个线程退出,避免死锁,是本领域技术人员需要解决的问题。
发明内容
有鉴于此,本申请的目的在于提供一种线程退出方法、装置、设备及可读存储介质,以在接收到线程退出命令时,使多个线程退出,避免死锁。其具体方案如下:
第一方面,本申请提供了一种线程退出方法,包括:
接收线程退出命令;
确定到达第一屏障的第一线程,以及未到达第一屏障的第二线程;
在第二线程按照线程退出命令执行退出的过程中,利用第二屏障阻塞第二线程,以唤醒第一线程和第二线程;
控制被唤醒后的第一线程和第二线程按照线程退出命令同步退出。
优选地,确定到达第一屏障的第一线程,以及未到达第一屏障的第二线程,包括:
根据线程状态确定第一线程和第二线程,第一线程的线程状态为执行状态,第二线程的线程状态为退出状态。
优选地,根据线程状态确定第一线程和第二线程之前,还包括:
当接收到线程退出命令,则将第二线程的线程状态由执行状态转换为退出状态。
优选地,利用第二屏障阻塞第二线程,以唤醒第一线程和第二线程,包括:
若第二线程到达第二屏障,则判断是否到达线程唤醒条件;
若是,则唤醒第一线程和第二线程。
优选地,判断是否到达线程唤醒条件,包括:
判断第一线程和第二线程的数量之和是否等于目标线程组中的线程数量之和,第一线程和第二线程处于目标线程组中。
优选地,控制被唤醒后的第一线程和第二线程按照线程退出命令同步退出之后,还包括:
回收第一屏障和第二屏障占用的计算机资源。
优选地,还包括:
利用预设标志位记录第二线程的数量。
第二方面,本申请提供了一种线程退出装置,包括:
接收模块,用于接收线程退出命令;
确定模块,用于确定到达第一屏障的第一线程,以及未到达第一屏障的第二线程;
唤醒模块,用于在第二线程按照线程退出命令执行退出的过程中,利用第二屏障阻塞第二线程,以唤醒第一线程和第二线程;
退出模块,用于控制被唤醒后的第一线程和第二线程按照线程退出命令同步退出。
第三方面,本申请提供了一种线程退出设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序,以实现前述公开的线程退出方法。
第四方面,本申请提供了一种可读存储介质,用于保存计算机程序,其中,计算机程序被处理器执行时实现前述公开的线程退出方法。
通过以上方案可知,本申请提供了一种线程退出方法,包括:接收线程退出命令;确定到达第一屏障的第一线程,以及未到达第一屏障的第二线程;在第二线程按照线程退出命令执行退出的过程中,利用第二屏障阻塞第二线程,以唤醒第一线程和第二线程;控制被唤醒后的第一线程和第二线程按照线程退出命令同步退出。
可见,该方法在可按照线程退出命令直接退出的线程的退出流程中设置了第二个屏障,这样在接收到线程退出命令后,未到达第一屏障的线程(也就是可按照线程退出命令直接退出的线程)便可以在退出过程中遇到第二屏障,那么未到达第一屏障的线程以及到达第一屏障的线程就都处于休眠状态了,也就是都已到达屏障,因此满足线程被唤醒的条件,所有到达屏障的线程都可以被唤醒,从而所有线程均可按照线程退出命令退出,实现了所有线程的同步退出。本申请利用退出流程中的第二屏障使所有线程被唤醒,避免了死锁情况的发生。
相应地,本申请提供的一种线程退出装置、设备及可读存储介质,也同样具有上述技术效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的第一种线程退出方法流程图;
图2为本申请公开的第二种线程退出方法流程图;
图3为本申请公开的一种线程同步过程示意图;
图4为本申请公开的一种线程退出过程示意图;
图5为本申请公开的一种线程退出装置示意图;
图6为本申请公开的一种线程退出设备示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,屏障在协调多个线程同步执行的过程中,会导致在接收到线程退出命令时,有的线程退出,而有的线程产生死锁,导致线程无法同步退出。为此,本申请提供了一种线程退出方案,能够实现所有线程的同步退出,避免死锁情况的发生。
参见图1所示,本申请实施例公开了第一种线程退出方法,包括:
S101、接收线程退出命令;
S102、确定到达第一屏障的第一线程,以及未到达第一屏障的第二线程;
S103、在第二线程按照线程退出命令执行退出的过程中,利用第二屏障阻塞第二线程,以唤醒第一线程和第二线程;
S104、控制被唤醒后的第一线程和第二线程按照线程退出命令同步退出。
在本实施例中,控制被唤醒后的第一线程和第二线程按照线程退出命令同步退出之后,还包括:回收第一屏障和第二屏障占用的计算机资源,以便其他线程利用第一屏障和第二屏障执行上述同步退出过程。需要说明的是,第一线程和第二线程同属于一个线程组,该线程组为当前系统中的其中一个线程组。也就是说,当前系统中还有其他线程组。
线程(thread)是系统能够运算调度的最小单位,在软件中一般以一段无限循环的可执行代码来体现。因此每个通道的分析可单独开启一个线程来处理。多个通道的同步分析问题转化为多线程同步问题。
屏障(barrier)是协调多个线程并行工作的同步机制。线程运行到达屏障时,会处于休眠状态,直到同组的所有线程都到达屏障时,线程被唤醒,继续往下工作。
屏障可采用pthread函数库中的pthread_barrie系列函数实现。
pthread_barrie系列函数包括:
int pthread_barrier_init(pthread_barrier_t*b,const void*attr,unsignedint count);
int pthread_barrier_wait(pthread_barrier_t*b);
int pthread_barrier_destroy(pthread_barrier_t*b)。
函数pthread_barrier_init用于初始化屏障,pthread_barrier_t*b是一个barrier对象指针;attr是属性,一般此处为空(NULL);count为需要同步的线程数量。
函数pthread_barrier_wait用于设置屏障,把该函数放置于需要设置屏障的线程代码中。执行到该处时,barrier计数器加1,如果计数器小于pthread_barrier_init所设置的count,该线程将休眠,以等待其他线程。如果计数器等于count,说明所有线程都到达屏障,处于休眠状态的线程被唤醒,继续执行之后的流程。函数pthread_barrier_destroy用于销毁屏障,已回收屏障占用的计算机资源,如内存等。
可见,本申请实施例在可按照线程退出命令直接退出的线程的退出流程中设置了第二个屏障,这样在接收到线程退出命令后,未到达第一屏障的线程(也就是可按照线程退出命令直接退出的线程)便可以在退出过程中遇到第二屏障,那么未到达第一屏障的线程以及到达第一屏障的线程就都处于休眠状态了,也就是都已到达屏障,因此满足线程被唤醒的条件,所有到达屏障的线程都可以被唤醒,从而所有线程均可按照线程退出命令退出,实现了所有线程的同步退出。本申请利用退出流程中的第二屏障使所有线程被唤醒,避免了死锁情况的发生。
参见图2所示,本申请实施例公开了第二种线程退出方法,包括:
S201、接收线程退出命令;
S202、根据预设标志位确定未到达第一屏障的第二线程,并将第二线程的线程状态由执行状态转换为退出状态;
S203、根据线程状态区分到达第一屏障的第一线程,以及未到达第一屏障的第二线程;
S204、若第二线程在退出过程中到达第二屏障,则判断是否到达线程唤醒条件;若是,则执行S205;若否,则执行S206;
S205、唤醒第一线程和第二线程,以使被唤醒后的第一线程和第二线程按照线程退出命令同步退出;
S206、生成退出失败的提示消息并展示。
在本实施例中,第一线程的线程状态为执行状态,第二线程的线程状态为退出状态。
在一种具体实施方式中,判断是否到达线程唤醒条件,包括:判断第一线程和第二线程的数量之和是否等于目标线程组中的线程数量之和,第一线程和第二线程处于目标线程组中。其中,在第一屏障和第二屏障处,唤醒线程的条件均为:第一线程和第二线程的数量之和等于目标线程组中的线程数量之和。第一线程和第二线程均为泛指,因此第一线程可以为多个,第二线程也可以为多个。
其中,利用预设标志位记录第二线程的数量。预设标志位初始化为0,当目标线程组中的各个线程执行时,预设标志位用于记录未到达第一屏障的第二线程的个数,因此当预设标志位大于0时,可确定线程为第二线程。
需要说明的是,本实施例中的实现步骤与上述实施例相同或类似,故可以相互参照,本实施例便不再赘述。
由上可见,本实施例在可按照线程退出命令直接退出的线程的退出流程中设置了第二个屏障,这样在接收到线程退出命令后,未到达第一屏障的线程(也就是可按照线程退出命令直接退出的线程)便可以在退出过程中遇到第二屏障,那么未到达第一屏障的线程以及到达第一屏障的线程就都处于休眠状态了,也就是都已到达屏障,因此满足线程被唤醒的条件,所有到达屏障的线程都可以被唤醒,从而所有线程均可按照线程退出命令退出,实现了所有线程的同步退出。本申请利用退出流程中的第二屏障使所有线程被唤醒,避免了死锁情况的发生。
按照本申请提供的核心思想进行如下分析。
首先分析多线程同步时的状态。如图3所示,线程数量为3;t0时刻线程1到达屏障,另外两个线程没有到达屏障,线程1处于休眠状态,等待其他线程(线程2和3);t1时刻3个线程都到达屏障,符合唤醒的条件,3个线程都被唤醒;t2时刻3个线程接着往下执行。可以看出屏障起到了线程同步的作用。
再分析线程退出时的状态。如图4所示,t0时刻线程1到达屏障,另外两个没有线程到达屏障,线程1处于阻塞状态,等待其他线程。如果此时外部系统下发给所有线程退出命令,则另外两个线程会退出,而线程1一直处于休眠状态,此时会产生死锁。
系统下发线程退出命令时,假设阻塞在屏障处的线程为A组线程,能够完全退出的线程为B组线程,分析后可得公式:Ta+Tb=count。其中Ta为A组中的线程数量,Tb为B组中的线程数量,count为线程总数。
死锁状态下只有A组线程在屏障处等待,即Ta<count。如果B组线程在退出前再设置一次屏障,使得在屏障处被阻塞的线程数量等于count(满足上述公式),那么所有线程就可以被唤醒,继续往下执行,死锁问题就可得到解决。由于A组线程和B组线程是同一段代码,因此还需要增加一个标志位,使得B组线程退出时会遇到屏障,而A组线程退出时不会遇到屏障。
解决死锁方法的伪代码描述如下:
Figure BDA0002232699510000071
Figure BDA0002232699510000081
在实际使用时,先在线程外调用pthread_barrier_init初始化屏障,预先设置好线程数目count。线程在代码中合适位置调用pthread_barrier_wait设置屏障。其中process()函数的执行实际上的其中A组线程和B组线程的执行。另外在process()函数开头还会判断线程状态,当系统设置线程状态为线程退出状态时,process()返回STATE_QUIT退出,此时线程跳出while循环并退出,此时存在死锁风险。
增加线程退出时的判断逻辑后,上述伪代码中getBarrierFlag()会返回一个全局的标志位的值,该标志位会在分析线程创建之前初始化为0。其中,addBarrierFlag()是一个标志位自增操作。这两个函数不会被线程调度所打断。
如上述代码,当接收到线程退出命令,能够顺利在process函数中返回STATE_QUIT的B组线程进入else分支,else分支中有另外一个屏障,以阻塞B组线程。在B组线程被阻塞时,满足线程被唤醒的条件,那么被阻塞在第一个屏障处的A组线程进入if分支,直接退出,B组线程也随之退出。因此当接收到线程退出命令,不管各线程处于哪种状态,最后都能够完全退出,从而实现了所有线程的同步退出,避免了死锁情况的发生。
下面对本申请实施例提供的一种线程退出装置进行介绍,下文描述的一种线程退出装置与上文描述的一种线程退出方法可以相互参照。
参见图5所示,本申请实施例公开了一种线程退出装置,包括:
接收模块501,用于接收线程退出命令;
确定模块502,用于确定到达第一屏障的第一线程,以及未到达第一屏障的第二线程;
唤醒模块503,用于在第二线程按照线程退出命令执行退出的过程中,利用第二屏障阻塞第二线程,以唤醒第一线程和第二线程;
退出模块504,用于控制被唤醒后的第一线程和第二线程按照线程退出命令同步退出。
在一种具体实施方式中,确定模块具体用于:
根据线程状态确定第一线程和第二线程,第一线程的线程状态为执行状态,第二线程的线程状态为退出状态。
在一种具体实施方式中,还包括:
转换模块,用于当接收到线程退出命令,则将第二线程的线程状态由执行状态转换为退出状态。
在一种具体实施方式中,唤醒模块包括:
判断单元,用于若第二线程到达第二屏障,则判断是否到达线程唤醒条件;
唤醒单元,用于若到达线程唤醒条件,则唤醒第一线程和第二线程。
在一种具体实施方式中,判断单元具体用于:
判断第一线程和第二线程的数量之和是否等于目标线程组中的线程数量之和,第一线程和第二线程处于目标线程组中。
在一种具体实施方式中,还包括:
回收模块,用于回收第一屏障和第二屏障占用的计算机资源。
在一种具体实施方式中,还包括:
记录模块,用于利用预设标志位记录第二线程的数量。
其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本实施例提供了一种线程退出装置,该装置实现了所有线程的同步退出,避免了死锁情况的发生。
下面对本申请实施例提供的一种线程退出设备进行介绍,下文描述的一种线程退出设备与上文描述的一种线程退出方法及装置可以相互参照。
参见图6所示,本申请实施例公开了一种线程退出设备,包括:
存储器601,用于保存计算机程序;
处理器602,用于执行所述计算机程序,以实现上述任意实施例公开的方法。
下面对本申请实施例提供的一种可读存储介质进行介绍,下文描述的一种可读存储介质与上文描述的一种线程退出方法、装置及设备可以相互参照。
一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的线程退出方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本申请涉及的“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法或设备固有的其它步骤或单元。
需要说明的是,在本申请中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的可读存储介质中。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (8)

1.一种线程退出方法,其特征在于,包括:
接收线程退出命令;
确定到达第一屏障的第一线程,以及未到达所述第一屏障的第二线程;
在所述第二线程按照所述线程退出命令执行退出的过程中,利用第二屏障阻塞所述第二线程,以唤醒所述第一线程和所述第二线程;
控制被唤醒后的所述第一线程和所述第二线程按照所述线程退出命令同步退出;
所述利用第二屏障阻塞所述第二线程,以唤醒所述第一线程和所述第二线程,包括:
若所述第二线程到达所述第二屏障,则判断所述第一线程和所述第二线程的数量之和是否等于目标线程组中的线程数量之和,所述第一线程和所述第二线程处于所述目标线程组中;
若是,则唤醒所述第一线程和所述第二线程。
2.根据权利要求1所述的线程退出方法,其特征在于,所述确定到达第一屏障的第一线程,以及未到达所述第一屏障的第二线程,包括:
根据线程状态确定所述第一线程和所述第二线程,所述第一线程的线程状态为执行状态,所述第二线程的线程状态为退出状态。
3.根据权利要求2所述的线程退出方法,其特征在于,所述根据线程状态确定所述第一线程和所述第二线程之前,还包括:
当接收到所述线程退出命令,则将所述第二线程的线程状态由执行状态转换为退出状态。
4.根据权利要求1至3任意一项所述的线程退出方法,其特征在于,所述控制被唤醒后的所述第一线程和所述第二线程按照所述线程退出命令同步退出之后,还包括:
回收所述第一屏障和所述第二屏障占用的计算机资源。
5.根据权利要求1所述的线程退出方法,其特征在于,还包括:
利用预设标志位记录所述第二线程的数量。
6.一种线程退出装置,其特征在于,包括:
接收模块,用于接收线程退出命令;
确定模块,用于确定到达第一屏障的第一线程,以及未到达所述第一屏障的第二线程;
唤醒模块,用于在所述第二线程按照所述线程退出命令执行退出的过程中,利用第二屏障阻塞所述第二线程,以唤醒所述第一线程和所述第二线程;
退出模块,用于控制被唤醒后的所述第一线程和所述第二线程按照所述线程退出命令同步退出;
所述唤醒模块包括:
线程数量判断模块,用于若所述第二线程到达所述第二屏障,则判断所述第一线程和所述第二线程的数量之和是否等于目标线程组中的线程数量之和,所述第一线程和所述第二线程处于所述目标线程组中;若是,则触发线程唤醒模块;
所述线程唤醒模块,用于唤醒所述第一线程和所述第二线程。
7.一种线程退出设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,以实现如权利要求1至5任一项所述的线程退出方法。
8.一种可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述的线程退出方法。
CN201910972941.4A 2019-10-14 2019-10-14 一种线程退出方法、装置、设备及可读存储介质 Active CN110716755B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910972941.4A CN110716755B (zh) 2019-10-14 2019-10-14 一种线程退出方法、装置、设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910972941.4A CN110716755B (zh) 2019-10-14 2019-10-14 一种线程退出方法、装置、设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN110716755A CN110716755A (zh) 2020-01-21
CN110716755B true CN110716755B (zh) 2023-05-02

Family

ID=69211578

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910972941.4A Active CN110716755B (zh) 2019-10-14 2019-10-14 一种线程退出方法、装置、设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN110716755B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112214243B (zh) * 2020-10-21 2022-05-27 上海壁仞智能科技有限公司 配置向量运算系统中的协作线程束的装置和方法
CN113641506A (zh) * 2021-07-02 2021-11-12 的卢技术有限公司 基于Golang语言的多协程同步屏障方法、装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572167A (zh) * 2013-10-28 2015-04-29 国际商业机器公司 启动和管理无人参与的应用程序的方法和计算机系统
CN105975349A (zh) * 2016-05-04 2016-09-28 北京智能管家科技有限公司 一种线程锁的优化方法
CN107077373A (zh) * 2014-10-20 2017-08-18 国际商业机器公司 针对多线程处理器的协调式开始解释执行退出的改进的效率

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101788922B (zh) * 2009-01-22 2013-12-25 国际商业机器公司 基于辅助线程实现事务存储系统的方法和装置
US8161250B2 (en) * 2009-05-20 2012-04-17 Sharp Laboratories Of America, Inc. Methods and systems for partially-transacted data concurrency

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572167A (zh) * 2013-10-28 2015-04-29 国际商业机器公司 启动和管理无人参与的应用程序的方法和计算机系统
CN107077373A (zh) * 2014-10-20 2017-08-18 国际商业机器公司 针对多线程处理器的协调式开始解释执行退出的改进的效率
CN105975349A (zh) * 2016-05-04 2016-09-28 北京智能管家科技有限公司 一种线程锁的优化方法

Also Published As

Publication number Publication date
CN110716755A (zh) 2020-01-21

Similar Documents

Publication Publication Date Title
CN110716755B (zh) 一种线程退出方法、装置、设备及可读存储介质
CN100517235C (zh) 用于检测多线程程序中潜在竞争的方法和系统
CN106257411B (zh) 单指令多线程计算系统及其方法
US10013290B2 (en) System and method for synchronizing threads in a divergent region of code
US7992146B2 (en) Method for detecting race conditions involving heap memory access
CN108268770B (zh) 一种栈溢出检测系统及方法
US20110283286A1 (en) Methods and systems for dynamically adjusting performance states of a processor
US20140032976A1 (en) Apparatus and method for detecting error
US20140092106A1 (en) Clamping of dynamic capacitance for graphics
CN102222015A (zh) 检测多线程程序中的死锁的方法及系统
CN103365776A (zh) 基于确定性重放的并行系统弱一致性的验证方法和系统
US8595726B2 (en) Apparatus and method for parallel processing
CN106528065B (zh) 一种线程获取方法及设备
CN104978272A (zh) 一种用于数据竞争检测的程序调度方法
CN104809027A (zh) 一种基于无锁缓冲区的数据采集方法
US20060048147A1 (en) Distributed counter and centralized sensor in barrier wait synchronization
CN100583047C (zh) 实时中断与多个进程状态同步的方法
US20130339689A1 (en) Later stage read port reduction
US8819460B2 (en) Dynamic energy management
CN109885489B (zh) 驱动程序中数据竞争检测方法及装置
KR101635816B1 (ko) 결정적 프로그레스 인덱스를 이용한 스레드 프로그레스 트래킹 방법 및 장치
JP4209377B2 (ja) 半導体装置
CN107315598A (zh) 一种系统恢复方法及装置
CN104182280A (zh) 面向混合主存嵌入式系统的低能耗rm实时任务调度方法
CN104182180A (zh) 面向混合主存嵌入式系统的低能耗edf实时任务调度方法

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