CN110851286B - 线程管理方法、装置、电子设备及存储介质 - Google Patents
线程管理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN110851286B CN110851286B CN201911100202.2A CN201911100202A CN110851286B CN 110851286 B CN110851286 B CN 110851286B CN 201911100202 A CN201911100202 A CN 201911100202A CN 110851286 B CN110851286 B CN 110851286B
- Authority
- CN
- China
- Prior art keywords
- thread
- early warning
- arbitration
- condition
- indexes
- 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
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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种线程管理方法、装置、电子设备及存储介质,能够利用操作系统中运行线程的线程指标,判断出线程是否发生死锁,并为死锁的线程分配相应的预警处理策略或者仲裁处理策略,不论是预警处理策略还是仲裁处理策略都是为了将死锁线程所占用的系统资源释放出来,防止多个线程同时竞争系统资源的情况,进而避免线程运行造成的死锁问题。本发明的技术方案能够避免人工排查死锁线程造成的准确率低和效率低的问题。
Description
技术领域
本发明涉及软件开发技术领域,尤其涉及线程管理方法、装置、电子设备及存储介质。
背景技术
线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,一个进程中可以并发多个线程,每个线程可以并行执行不同的任务。并发进行的多个线程通常以线程池的形式处理,线程池在处理过程中先将任务添加到队列,然后在创建线程后自动启动这些任务。
现今的操作系统多是根据实际处理的业务种类或者业务需求,对不同的业务分别建立各自的线程或者线程池;而后操作系统中各个业务对应的线程或者线程池并行运行,使得操作系统中的各个业务可以并行操作。但是,对不同业务对应建立线程或者线程池的方式,会使得操作系统并行处理多个业务时,出现多个线程同时竞争系统资源的情况,进而造成线程运行阻塞的死锁现象。
目前,当操作系统中发生线程死锁时,多是依靠人工对每一个运行的线程逐一进行排查,最终排查出死锁线程并解除死锁,以释放该线程所占用的系统资源,然而这种人工排查方式又非常耗时,如果当前运行的线程比较多,人工也难以快速又准确地从众多的线程中找到发生死锁的线程。
发明内容
本发明提供了一种线程管理方法、装置、电子设备及存储介质,以解决目前人工排查死锁线程时准确低和效率低的问题。
第一方面,本发明提供了一种线程管理方法,包括:
获取操作系统中当前运行的任一线程的N个线程指标,其中N大于或者等于1,所述线程指标用于表征线程在操作系统中当前的运行状态;
根据所述N个线程指标,确定所述任一线程是否达到预警条件;
当所述任一线程达到预警条件时,进一步根据所述N个线程指标,确定所述任一线程是否达到仲裁条件;
若所述任一线程未达到仲裁条件,则对所述任一线程执行预警处理策略;
若所述任一线程达到仲裁条件,则对所述任一线程执行仲裁处理策略。
结合第一方面,在第一方面的一种可实现方式中,根据所述N个线程指标,确定所述任一线程是否达到预警条件,包括:
当所述N个线程指标中存在M个线程指标超过该指标对应的指标阈值时,则确定所述任一线程达到预警条件,其中N大于M;
进一步根据所述N个线程指标,确定所述任一线程是否达到仲裁条件,包括:
当所述N个线程指标中存在P个线程指标超过该指标对应的指标阈值时,则确定所述任一线程达到仲裁条件,其中N大于或者等于P,P大于M。
结合第一方面,在第一方面的一种可实现方式中,根据所述N个线程指标,确定所述任一线程是否达到预警条件,包括:
当所述N个线程指标中每一个线程指标的量化值与其指标权重值的乘积的累计和大于第一阈值时,则确定所述任一线程达到预警条件;
进一步根据所述N个线程指标,确定所述任一线程是否达到仲裁条件,包括:
当所述N个线程指标中每一个线程指标的量化值与其指标权重值的乘积的累计和大于第二阈值时,则确定所述任一线程达到仲裁条件。
结合第一方面,在第一方面的一种可实现方式中,对所述任一线程执行预警处理策略,包括:
当所述任一线程达到预警条件时,向用户发送与所述预警策略对应的预警信息;
判断是否收到用户对于所述预警信息的干涉处理,所述干涉处理用于表示用户对所述预警做出的解除预警的操作;
如果未收到用户对于所述预警的干涉处理,则继续获取所述任一线程当前运行的所述N个线程指标;
进一步根据所述N个线程指标,确定所述任一线程是否达到仲裁条件。
结合第一方面,在第一方面的一种可实现方式中,对所述任一线程执行仲裁处理策略,包括:
当所述任一线程达到仲裁条件时,向用户发送与所述仲裁策略对应的仲裁信息;
判断是否收到用户对于所述仲裁信息的干涉处理,所述干涉处理用于表示用户对所述仲裁做出的解除仲裁的操作;
如果未收到用户对于所述仲裁的干涉处理,则对所述任一线程执行仲裁处理策略。
结合第一方面,在第一方面的一种可实现方式中,对所述任一线程执行仲裁处理策略之后,还包括:
根据操作系统中当前运行的其他线程的优先级确定应获得所述任一线程所释放的系统资源的线程。
第二方面,本发明提供了一种线程管理装置,包括:
指标获取模块,用于获取操作系统中当前运行的任一线程的N个线程指标,其中N大于或者等于1,所述线程指标用于表征线程在操作系统中当前的运行状态;
策略确定模块,用于根据所述N个线程指标,确定所述任一线程是否达到预警条件;当所述任一线程达到预警条件时,进一步根据所述N个线程指标,确定所述任一线程是否达到仲裁条件;
处理模块,用于当所述任一线程未达到仲裁条件时,对所述任一线程执行预警处理策略;当所述任一线程达到仲裁条件时,对所述任一线程执行仲裁处理策略。
结合第二方面,在第二方面的一种可实现方式中,所述策略确定模块包括:
第一判断单元,用于当所述N个线程指标中存在M个线程指标超过该指标对应的指标阈值时,确定所述任一线程达到预警条件,其中N大于M;当所述N个线程指标中存在P个线程指标超过该指标对应的指标阈值时,确定所述任一线程达到仲裁条件,其中N大于或者等于P,P大于M。
结合第二方面,在第二方面的一种可实现方式中,所述策略确定模块还包括:
第二判断单元,用于当所述N个线程指标中每一个线程指标的量化值与其指标权重值的乘积的累计和大于第一阈值时,确定所述任一线程达到预警条件;当所述N个线程指标中每一个线程指标的量化值与其指标权重值的乘积的累计和大于第二阈值时,则确定所述任一线程达到仲裁条件。
结合第二方面,在第二方面的一种可实现方式中,所述处理模块,包括:
预警信息发送单元,用于当所述任一线程达到预警条件时,向用户发送与所述预警策略对应的预警信息;
第三判断单元,用于判断是否收到用户对于所述预警信息的干涉处理,所述干涉处理用于表示用户对所述预警做出的解除预警的操作;如果未收到用户对于所述预警的干涉处理,则继续获取所述任一线程当前运行的所述N个线程指标;进一步根据所述N个线程指标,确定所述任一线程是否达到仲裁条件。
结合第二方面,在第二方面的一种可实现方式中,所述处理模块还包括:
仲裁信息发送单元,用于当所述任一线程达到仲裁条件时,向用户发送与所述仲裁策略对应的仲裁信息;
第四判断单元,用于判断是否收到用户对于所述仲裁信息的干涉处理,所述干涉处理用于表示用户对所述仲裁做出的解除仲裁的操作;如果未收到用户对于所述仲裁的干涉处理,则对所述任一线程执行仲裁处理策略。
结合第二方面,在第二方面的一种可实现方式中,所述装置还包括:
资源确定模块,用于根据操作系统中当前运行的其他线程的优先级确定应获得所述任一线程所释放的系统资源的线程。
第三方面,本发明提供了一种电子设备,包括:
存储器,用于存储程序指令;处理器,用于调用并执行所述存储器中的程序指令,以实现第一方面所述的线程管理方法。
第四方面,本发明还提供了一种存储介质,所述存储介质中存储有计算机程序,当线程管理装置的至少一个处理器执行所述计算机程序时,线程管理装置执行第一方面所述的线程管理方法。
由以上技术方案可知,本发明提供的线程管理方法、装置、电子设备及存储介质,能够利用操作系统中运行线程的线程指标,判断出线程是否发生死锁,并为死锁的线程分配相应的预警处理策略或者仲裁处理策略,不论是预警处理策略还是仲裁处理策略都是为了将死锁线程所占用的系统资源释放出来,防止多个线程同时竞争系统资源的情况,进而避免线程运行造成的死锁问题。本发明的技术方案能够避免人工排查死锁线程造成的准确率低和效率低的问题。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的线程管理方法的流程图;
图2为本发明实施例提供的对任一线程执行预警处理策略的方法流程图;
图3为本发明实施例提供的对任一线程执行仲裁处理策略的方法流程图;
图4为本发明实施例提供的线程管理装置的结构框图;
图5为本发明实施例提供的电子设备硬件结构示意图。
具体实施方式
目前,当操作系统中发生线程死锁时,多是依靠人工对每一个运行的线程逐一进行排查,最终排查出死锁线程并解除死锁,以释放该线程所占用的系统资源,然而这种人工排查方式又非常耗时,如果当前运行的线程比较多,人工也难以快速又准确地从众多的线程中找到发生死锁的线程。为此,本发明实施例提供了一种线程管理方法,能够根据线程的指标对线程进行相应的处理,释放线程占用的系统资源,避免线程竞争资源的问题,避免人工排查死锁线程的方式准确率低和效率低的问题。
图1为本发明实施例提供的线程管理方法的流程图。如图1所示,本发明提供的线程管理方法包括:
S101,获取操作系统中当前运行的任一线程的N个线程指标,其中N大于或者等于1,所述线程指标用于表征线程在操作系统中当前的运行状态。
在本发明实施例的操作系统中存在很多正在运行的线程,在获取线程指标之前,可以对操作系统中所有的线程进行分类,属于一个类别的线程可以放进同一个线程池中。获取线程指标时,可以选择一个单独的线程进行也可以选择一个线程池中的某个线程进行。由于操作系统中同时运行的线程有很多,为了准确地判断出哪一个线程或者哪些线程需要进行处理,需要获取每一个正在运行的线程对应的线程指标,这个线程指标表示的是线程当前运行的状态,具体包括但不限于运行时间、阻塞时间等,本发明实施例中可以将一个线程中可用的线程指标看作有N个,那么进行指标判断时,需要对所有N个指标进行判断,以使得指标判断的方式更加全面和准确。
通常,当线程发生死锁时,线程从死锁的时刻开始记录阻塞时间,运行时间是从线程运行时开始记录的线程生存时间。
S102,根据所述N个线程指标,确定所述任一线程是否达到预警条件。
本发明实施例中,在获取到每一个线程对应的线程指标之后,还要根据线程指标中具体的数据,与预警处理策略的指标阈值进行对比,进而确定线程是否达到预警条件。如果任一线程都未达到预警条件,则说明所有线程中可能都不存在运行阻塞的情况或者都没有发生死锁问题。
S103,当所述任一线程达到预警条件时,进一步根据所述N个线程指标,确定所述任一线程是否达到仲裁条件。
S104,若所述任一线程未达到仲裁条件,则对所述任一线程执行预警处理策略。如果所有线程中存在任一线程达到了预警条件,说明该线程存在运行阻塞问题或者死锁问题,若此时该线程并未达到仲裁条件,则只对该线程采取预警处理策略。本发明中的预警处理策略可以包括但不限于向用户发送预警信息、发送预警提示音等等,以此来提示用户操作系统中当前线程存在死锁问题,并且将发生死锁的具体线程也向用户展示出来,以便用户根据线程的类型或者具体情况而采取相应的措施解除死锁。
S105,若所述任一线程达到仲裁条件,则对所述任一线程执行仲裁处理策略。当然本发明实施例中也存在任一线程可能直接达到仲裁条件,则对于直接达到仲裁条件的线程,无需采取预警处理策略,直接采取仲裁处理策略。本发明实施例中的仲裁处理策略可以包括但不限于用户解除线程的死锁、操作系统自行解除线程的死锁等。
本发明步骤S102和步骤S103的过程都可以理解为对死锁检测的过程,如果线程指标达到预警条件对应的阈值时,则说明线程指标对应的线程存在死锁的问题,如果线程指标未达到预警条件对应的阈值,则说明线程指标对应的线程可能不存在死锁的问题。而如果线程指标直接达到仲裁条件对应的阈值,则说明线程指标对应的线程也可能存在死锁的问题。具体的,线程指标达到预警条件或者仲裁条件对应的阈值的情况可能为线程指标的数值在阈值范围内等。
可见,本发明实施例中提供的线程管理方法,可以根据获取的线程指标,判断线程应该对应的是预警处理策略还是仲裁处理策略,以及判断出线程是否存在死锁问题,然后根据处理策略对应的处理方式对线程进行处理,可以根据用户的操作或者操作系统自身的操作解除线程的死锁问题,释放线程死锁时所占用的系统资源。
本发明实施例还提供了一种确定线程是否达到预警和仲裁条件的方法,结合上述实施例的内容,根据所述N个线程指标,确定所述任一线程是否达到预警条件的内容还包括:当所述N个线程指标中存在M个线程指标超过该指标对应的指标阈值时,则确定所述任一线程达到预警条件,其中N大于M。
例如,我们选取线程中的5个线程指标,其中每个线程指标都会对应一个指标阈值,当这5个线程指标中有3个线程指标都超过其各自对应的指标阈值,那么可以确定这5个指标对应的线程达到了预警条件。
并且结合上述实施例的内容,进一步根据所述N个线程指标,确定所述任一线程是否达到仲裁条件的内容还包括:当所述N个线程指标中存在P个线程指标超过该指标对应的指标阈值时,则确定所述任一线程达到仲裁条件,其中N大于或者等于P,P大于M。
例如,我们仍旧选取线程中的5个线程指标,当这5个线程指标中有4个线程指标都超过其各自对应的指标阈值时,那么可以确定这5个线程指标对应的线程达到了仲裁条件。值得说明的是,本发明实施例中进一步根据所述N个线程指标,确定所述任意线程是否达到仲裁条件是在该线程已经达到预警条件的前提下进行的,此时可以先对线程采取预警处理策略,在对线程采取仲裁处理策略。
可见,本发明的实施例中可以利用所述线程指标直接判断出出现死锁问题的线程,并对该线程采取对应的预警处理策略或者仲裁处理策略,通过用户干预或者操作系统自身处理,解除线程的死锁的问题,释放线程死锁时所占用的系统资源。
上述这种确定线程是否达到预警和仲裁条件的方法,是对线程中的所有选取的线程指标进行逐一的判断,确保每一个线程指标都能参与到线程死锁的判断中,使得线程死锁的检测更加全面和准确。但是,能保证所有线程指标都参与到线程死锁判断中的方式不仅仅只有这一种,因此本发明实施例还提供了另一种确定线程是否达到预警和仲裁条件的方法:
其中,根据所述N个线程指标,确定所述任一线程是否达到预警条件的内容还包括:当所述N个线程指标中每一个线程指标的量化值与其指标权重值的乘积的累计和大于第一阈值时,则确定所述任一线程达到预警条件。
例如,我们选取线程中的3个线程指标,分别将3个线程指标的具体信息转化为量化值A、B和C,然后计算每一个线程指标在所有3个线程指标中的指标权重值a、b和c,最后计算A*a+B*b+C*c的和值,对比该和值与预设的第一阈值,当该和值大于第一阈值时,确定这3个线程指标对应的线程达到了预警条件。
并且,进一步根据所述N个线程指标,确定所述任一线程是否达到仲裁条件的内容还包括:当所述N个线程指标中每一个线程指标的量化值与其指标权重值的乘积的累计和大于第二阈值时,则确定所述任一线程达到仲裁条件。
例如,我们仍选取线程中的3个线程指标,当计算出的A*a+B*b+C*c和值大于第二阈值时,则确定这3个线程标识对应的线程达到了仲裁条件。值得说明的是,本发明实施例中进一步根据所述N个线程指标,确定所述任意线程是否达到仲裁条件也是在该线程已经达到预警条件的前提下进行的,此时可以先对线程采取预警处理策略,采取预警处理策略的同时,线程指标事实上还在根据线程运行的状态不断地变化,因此在进行仲裁条件判断时所采用的线程指标是都是当前时刻获取到的具有新的数据或者新的信息的线程指标。
可见,本发明实施例提供的另一种确定线程是否达到预警和仲裁条件的方法,也可以利用所述线程指标直接判断出出现死锁问题的线程,并对该线程采取对应的预警处理策略或者仲裁处理策略,通过用户干涉或者操作系统自身处理,解除线程的死锁的问题,释放线程死锁时所占用的系统资源。
图2为本发明实施例提供的对任一线程执行预警处理策略的方法流程图。如图2所示,本发明实施例提供的对任一线程执行预警处理策略的步骤,包括:
S201,当所述任一线程达到预警条件时,向用户发送与所述预警策略对应的预警信息。
本发明实施例中预警信息用于向用户发送提示,如果某一个线程处于死锁状态,则用户会收到提示信息或者提示声音,具体的,用户收到提示的设备可以包括手机等移动终端或者PC机等。用户根据提示自行判断是否需要进行干涉。
S202,判断是否收到用户对于所述预警信息的干涉处理,所述干涉处理用于表示用户对所述预警做出的解除预警的操作。
本发明实施例中用户做出的干涉处理可以包括暂停线程、删除线程、重置线程等用于释放系统资源的操作,如果多个线程发生环状死锁,那么需要对这些线程都进行干涉处理,避免只解除一个线程死锁,而其他线程仍处于死锁状态,系统资源仍不可用的问题。
S203,如果未收到用户对于所述预警的干涉处理,则继续获取所述任一线程当前运行的所述N个线程指标。
本发明实施例中用户可以根据预警信息自行决定是否需要进行干涉,如果用户不对死锁线程进行干涉,那么该线程仍处于死锁的状态,为了避免死锁线程继续占用系统资源,应该对死锁线程持续监控,以便后续的处理。
S204,进一步根据所述N个线程指标,确定所述任一线程是否达到仲裁条件。
本发明实施例中,如果用户不对死锁线程进行干涉,持续对死锁线程监控并且不断获取该死锁线程的N个线程指标,继续判断这些线程指标是否达到仲裁条件对应的阈值,如果达到,则操作系统可以再次向用户发送仲裁信息请求用户干涉或者操作系统自行采取仲裁处理策略,自动释放系统资源。这也有效避免了用户忘记进行干涉,而死锁线程一直占用系统资源的问题。另外,本发明实施例中操作系统进行仲裁的方式也可以包括暂停线程、删除线程、重置线程等用于释放系统资源的操作。
图3为本发明实施例提供的对任一线程执行仲裁处理策略的方法流程图。如图3所示,本发明实施例提供的对任一线程执行仲裁处理策略的步骤,包括:
S301,当所述任一线程达到仲裁条件时,向用户发送与所述仲裁策略对应的仲裁信息。
本发明实施例中的方法可以对用户未进行干涉处理的预警后的线程进行是否满足仲裁条件的判断,如果在任一线程的线程指标达到了预警条件对应的阈值后,用户没有进行干涉处理,继续获取当前的线程指标判断是否达到了仲裁条件对应的阈值,如果达到了,则需要向用户发送仲裁信息,请求用户进行干涉处理。
或者,本发明实施例中也可以直接对任一线程进行是否满足仲裁条件的判断,如果任一线程的线程指标直接超过了仲裁条件对应的阈值,那么可以不必再向用户发送预警信息,直接向用户发送仲裁信息,请求用户进行干涉处理。
S302,判断是否收到用户对于所述仲裁信息的干涉处理,所述干涉处理用于表示用户对所述仲裁做出的解除仲裁的操作。
S303,如果未收到用户对于所述仲裁的干涉处理,则对所述任一线程执行仲裁处理策略。
本发明实施例中,如果用户并未对产生仲裁信息对应的线程进行干涉处理,那么为了避免该线程过久地占用系统资源,导致越来越多的线程产生死锁问题,需要操作系统自行强制对死锁线程进行仲裁处理。其中,用户进行干涉的方式可以包括暂停线程、删除线程、重置线程等用于释放系统资源的操作,操作系统进行仲裁的方式也可以包括暂停线程、删除线程、重置线程等用于释放系统资源的操作。
本发明实施例中,如果用户对死锁线程进行了干涉处理,那么说明占用的系统资源已经可以再次进行使用,此时需要重新实时监控操作系统中所有线程的运行状态,本发明实施例中可以定时对线程指标进行判断,即设置一个指标检测周期,也可以实时地对线程指标进行判断。
本发明实施例中,对获取的线程指标还可以进行死锁类型的判断,具体的死锁类型可以包括环状死锁和普通死锁。如果线程指标中表示出其对应的线程占有用一个系统资源的时间过长而不释放,而该线程所需要的下一个系统资源被另一个的线程所占用,另一个线程所需要的下一个系统资源又被其他线程所占用,形成环状占用的关系,那么此时发生的就是环状死锁,对于环状死锁,需要用户或者操作系统将所有发生环状死锁的线程所占用的所有系统资源全部释放;而如果线程指标中只表示出其对应的线程任务时间过长,则需要进行对任务时长进行上述内容中的预警判断和仲裁判断,进而判断出是否发生了线程死锁,此时这种死锁类型为普通死锁,对于普通的死锁,只需要用户或者操作系统释放发生死锁的线程所占用的系统资源即可。
另外,本发明实施例中,在对所述任一线程执行仲裁处理策略之后,还可以包括:根据操作系统中当前运行的其他线程的优先级确定应获得所述任一线程所释放的系统资源的线程。本发明实施例中可以先对操作系统中的所有线程根据其重要程度进行标记,生成线程标识,线程标识用于表示线程的优先级等级,重要程度高的线程其优先级等级就高,当多个线程需要使用同一个系统资源时,可以由优先级高的线程先使用,这样也可以有效地避免线程死锁的问题。
由以上技术方案可知,本发明提供的线程管理方法,能够利用操作系统中运行线程的线程指标,判断出线程是否发生死锁,并为死锁的线程分配相应的预警处理策略或者仲裁处理策略,不论是预警处理策略还是仲裁处理策略都是为了将死锁线程所占用的系统资源释放出来,防止多个线程同时竞争系统资源的情况,进而避免线程运行造成的死锁问题。本发明的技术方案能够避免人工排查死锁线程造成的准确率低和效率低的问题。
图4为本发明实施例提供的线程管理装置的结构框图。如图4所示,本发明实施例提供的线程管理装置包括:
指标获取模块41,用于获取操作系统中当前运行的任一线程的N个线程指标,其中N大于或者等于1,所述线程指标用于表征线程在操作系统中当前的运行状态;策略确定模块42,用于根据所述N个线程指标,确定所述任一线程是否达到预警条件;当所述任一线程达到预警条件时,进一步根据所述N个线程指标,确定所述任一线程是否达到仲裁条件;处理模块43,用于当所述任一线程未达到仲裁条件时,对所述任一线程执行预警处理策略;当所述任一线程达到仲裁条件时,对所述任一线程执行仲裁处理策略。
其中,所述策略确定模块包括:第一判断单元,用于当所述N个线程指标中存在M个线程指标超过该指标对应的指标阈值时,确定所述任一线程达到预警条件,其中N大于M;当所述N个线程指标中存在P个线程指标超过该指标对应的指标阈值时,确定所述任一线程达到仲裁条件,其中N大于或者等于P,P大于M。
所述策略确定模块还包括:第二判断单元,用于当所述N个线程指标中每一个线程指标的量化值与其指标权重值的乘积的累计和大于第一阈值时,确定所述任一线程达到预警条件;当所述N个线程指标中每一个线程指标的量化值与其指标权重值的乘积的累计和大于第二阈值时,则确定所述任一线程达到仲裁条件。
所述处理模块,包括:预警信息发送单元,用于当所述任一线程达到预警条件时,向用户发送与所述预警策略对应的预警信息;第三判断单元,用于判断是否收到用户对于所述预警信息的干涉处理,所述干涉处理用于表示用户对所述预警做出的解除预警的操作;如果未收到用户对于所述预警的干涉处理,则继续获取所述任一线程当前运行的所述N个线程指标;进一步根据所述N个线程指标,确定所述任一线程是否达到仲裁条件。
所述处理模块还包括:仲裁信息发送单元,用于当所述任一线程达到仲裁条件时,向用户发送与所述仲裁策略对应的仲裁信息;第四判断单元,用于判断是否收到用户对于所述仲裁信息的干涉处理,所述干涉处理用于表示用户对所述仲裁做出的解除仲裁的操作;如果未收到用户对于所述仲裁的干涉处理,则对所述任一线程执行仲裁处理策略。
所述装置还包括:资源确定模块,用于根据操作系统中当前运行的其他线程的优先级确定应获得所述任一线程所释放的系统资源的线程。
图5为本发明实施例提供的电子设备硬件结构示意图。如图5所示,本发明还提供了一种电子设备,包括:存储器51,用于存储程序指令;处理器52,用于调用并执行所述存储器中的程序指令,以实现上述实施例中所述的线程管理方法。具体可以参见前述实施例中的相关描述。
本发明实施例中,处理器52和存储器51可通过总线或其他方式连接。处理器可以是通用处理器,例如中央处理器、数字信号处理器、专用集成电路,或者被配置成实施本发明实施例的一个或多个集成电路。存储器可以包括易失性存储器,例如随机存取存储器;存储器也可以包括非易失性存储器,例如只读存储器、快闪存储器、硬盘或固态硬盘。
本发明实施例还提供了一种存储介质,所述存储介质中存储有计算机程序,当线程管理装置的至少一个处理器执行所述计算机程序时,线程管理装置执行上述实施例中所述的线程管理方法。
所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-only memory,简称:ROM)或随机存储记忆体(英文:random access memory,简称:RAM)等。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于服务构建装置和服务加载装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
以上所述的本发明实施方式并不构成对本发明保护范围的限定。
Claims (14)
1.一种线程管理方法,其特征在于,包括:
获取操作系统中当前运行的任一线程的N个线程指标,其中N大于1,所述线程指标用于表征线程在操作系统中当前的运行状态;
根据所述N个线程指标中存在的超过指标阈值对应的线程指标数量,其中所述线程指标数量大于1、或根据所述N个线程指标中每一个线程指标的量化值与其指标权重值的成绩的累计和,确定所述任一线程是否达到预警条件,并根据所述预警条件的结果进一步确定所述任一线程是否达到仲裁条件;所述预警条件包括所述任一线程运行阻塞或死锁;所述预警条件与所述仲裁条件对应不同的指标阈值;
当所述任一线程达到预警条件时,进一步根据所述N个线程指标,确定所述任一线程是否达到仲裁条件;
若所述任一线程未达到仲裁条件,则对所述任一线程执行预警处理策略,所述预警处理策略包括:向用户发送与所述预警策略对应的预警信息,以及,向用户展示发生死锁的线程;
若所述任一线程达到仲裁条件,则对所述任一线程执行仲裁处理策略。
2.根据权利要求1所述的方法,其特征在于,根据所述N个线程指标中存在的超过指标阈值对应的线程指标数量,确定所述任一线程是否达到预警条件,包括:
当所述N个线程指标中存在M个线程指标超过该指标对应的指标阈值时,则确定所述任一线程达到预警条件,其中N大于M;
进一步根据所述N个线程指标,确定所述任一线程是否达到仲裁条件,包括:
当所述N个线程指标中存在P个线程指标超过该指标对应的指标阈值时,则确定所述任一线程达到仲裁条件,其中N大于或者等于P,P大于M。
3.根据权利要求1所述的方法,其特征在于,根据所述N个线程指标中每一个线程指标的量化值与其指标权重值的成绩的累计和,确定所述任一线程是否达到预警条件,包括:
当所述N个线程指标中每一个线程指标的量化值与其指标权重值的乘积的累计和大于第一阈值时,则确定所述任一线程达到预警条件;
进一步根据所述N个线程指标,确定所述任一线程是否达到仲裁条件,包括:
当所述N个线程指标中每一个线程指标的量化值与其指标权重值的乘积的累计和大于第二阈值时,则确定所述任一线程达到仲裁条件。
4.根据权利要求1所述的方法,其特征在于,对所述任一线程执行预警处理策略,包括:
当所述任一线程达到预警条件时,向用户发送与所述预警策略对应的预警信息;
判断是否收到用户对于所述预警信息的干涉处理,所述干涉处理用于表示用户对所述预警做出的解除预警的操作;
如果未收到用户对于所述预警的干涉处理,则继续获取所述任一线程当前运行的所述N个线程指标;
进一步根据所述N个线程指标,确定所述任一线程是否达到仲裁条件。
5.根据权利要求4所述的方法,其特征在于,对所述任一线程执行仲裁处理策略,包括:
当所述任一线程达到仲裁条件时,向用户发送与所述仲裁策略对应的仲裁信息;
判断是否收到用户对于所述仲裁信息的干涉处理,所述干涉处理用于表示用户对所述仲裁做出的解除仲裁的操作;
如果未收到用户对于所述仲裁的干涉处理,则对所述任一线程执行仲裁处理策略。
6.根据权利要求1-5任一项所述的方法,其特征在于,对所述任一线程执行仲裁处理策略之后,还包括:
根据操作系统中当前运行的其他线程的优先级确定应获得所述任一线程所释放的系统资源的线程。
7.一种线程管理装置,其特征在于,包括:
指标获取模块,用于获取操作系统中当前运行的任一线程的N个线程指标,其中N大于1,所述线程指标用于表征线程在操作系统中当前的运行状态;
策略确定模块,用于根据所述N个线程指标中存在的超过指标阈值对应的线程指标数量,其中所述线程指标数量大于1、或根据所述N个线程指标中每一个线程指标的量化值与其指标权重值的成绩的累计和,确定所述任一线程是否达到预警条件,并根据所述预警条件的结果进一步确定所述任一线程是否达到仲裁条件;所述预警条件包括所述任一线程运行阻塞或死锁;所述预警条件与所述仲裁条件对应不同的指标阈值;当所述任一线程达到预警条件时,进一步根据所述N个线程指标,确定所述任一线程是否达到仲裁条件;
处理模块,用于当所述任一线程未达到仲裁条件时,对所述任一线程执行预警处理策略,所述预警处理策略包括:向用户发送与所述预警策略对应的预警信息,以及,向用户展示发生死锁的线程;当所述任一线程达到仲裁条件时,对所述任一线程执行仲裁处理策略。
8.根据权利要求7所述的装置,其特征在于,所述策略确定模块包括:
第一判断单元,用于当所述N个线程指标中存在M个线程指标超过该指标对应的指标阈值时,确定所述任一线程达到预警条件,其中N大于M;当所述N个线程指标中存在P个线程指标超过该指标对应的指标阈值时,确定所述任一线程达到仲裁条件,其中N大于或者等于P,P大于M。
9.根据权利要求7所述的装置,其特征在于,所述策略确定模块还包括:
第二判断单元,用于当所述N个线程指标中每一个线程指标的量化值与其指标权重值的乘积的累计和大于第一阈值时,确定所述任一线程达到预警条件;当所述N个线程指标中每一个线程指标的量化值与其指标权重值的乘积的累计和大于第二阈值时,则确定所述任一线程达到仲裁条件。
10.根据权利要求7所述的装置,其特征在于,所述处理模块,包括:
预警信息发送单元,用于当所述任一线程达到预警条件时,向用户发送与所述预警策略对应的预警信息;
第三判断单元,用于判断是否收到用户对于所述预警信息的干涉处理,所述干涉处理用于表示用户对所述预警做出的解除预警的操作;如果未收到用户对于所述预警的干涉处理,则继续获取所述任一线程当前运行的所述N个线程指标;进一步根据所述N个线程指标,确定所述任一线程是否达到仲裁条件。
11.根据权利要求10所述的装置,其特征在于,所述处理模块还包括:
仲裁信息发送单元,用于当所述任一线程达到仲裁条件时,向用户发送与所述仲裁策略对应的仲裁信息;
第四判断单元,用于判断是否收到用户对于所述仲裁信息的干涉处理,所述干涉处理用于表示用户对所述仲裁做出的解除仲裁的操作;如果未收到用户对于所述仲裁的干涉处理,则对所述任一线程执行仲裁处理策略。
12.根据权利要求7-11任一项所述的装置,其特征在于,所述装置还包括:
资源确定模块,用于根据操作系统中当前运行的其他线程的优先级确定应获得所述任一线程所释放的系统资源的线程。
13.一种电子设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用并执行所述存储器中的程序指令,以实现权利要求1-6任一项所述的线程管理方法。
14.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,当线程管理装置的至少一个处理器执行所述计算机程序时,线程管理装置执行权利要求1-6任一项所述的线程管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911100202.2A CN110851286B (zh) | 2019-11-12 | 2019-11-12 | 线程管理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911100202.2A CN110851286B (zh) | 2019-11-12 | 2019-11-12 | 线程管理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110851286A CN110851286A (zh) | 2020-02-28 |
CN110851286B true CN110851286B (zh) | 2023-02-17 |
Family
ID=69601433
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911100202.2A Active CN110851286B (zh) | 2019-11-12 | 2019-11-12 | 线程管理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110851286B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115617497B (zh) * | 2022-12-14 | 2023-03-31 | 阿里巴巴达摩院(杭州)科技有限公司 | 线程处理方法、调度组件、监测组件、服务器和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101046756A (zh) * | 2006-03-31 | 2007-10-03 | 国际商业机器公司 | 用于解决计算资源死锁的设备、系统以及方法 |
CN102222015A (zh) * | 2010-04-13 | 2011-10-19 | 三星电子(中国)研发中心 | 检测多线程程序中的死锁的方法及系统 |
CN107247630A (zh) * | 2017-06-05 | 2017-10-13 | 努比亚技术有限公司 | 线程检测方法、终端及计算机可读存储介质 |
CN107704269A (zh) * | 2017-10-16 | 2018-02-16 | 中国银行股份有限公司 | 一种基于区块链生成区块的方法以及系统 |
CN109240811A (zh) * | 2018-08-09 | 2019-01-18 | 武汉斗鱼网络科技有限公司 | 一种任务执行方法和装置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0514440A (ja) * | 1991-06-29 | 1993-01-22 | Toshiba Corp | プロトコル設計装置 |
US7418625B2 (en) * | 2004-09-09 | 2008-08-26 | Broadcom Corporation | Deadlock detection and recovery logic for flow control based data path design |
US20070220513A1 (en) * | 2006-03-15 | 2007-09-20 | International Business Machines Corporation | Automatic detection of hang, bottleneck and deadlock |
TWI439855B (zh) * | 2007-11-09 | 2014-06-01 | Inventec Appliances Corp | 數據庫即時監控系統及方法 |
US9052967B2 (en) * | 2010-07-30 | 2015-06-09 | Vmware, Inc. | Detecting resource deadlocks in multi-threaded programs by controlling scheduling in replay |
US9477576B2 (en) * | 2013-04-11 | 2016-10-25 | International Business Machines Corporation | Using application state data and additional code to resolve deadlocks |
US20150278684A1 (en) * | 2014-03-26 | 2015-10-01 | Qualcomm Incorporated | Time synchronization of spiking neuron models on multiple nodes |
CN104239147B (zh) * | 2014-10-20 | 2018-03-09 | 浪潮(北京)电子信息产业有限公司 | 一种处理死锁循环方法及系统 |
JP6504610B2 (ja) * | 2016-05-18 | 2019-04-24 | Necプラットフォームズ株式会社 | 処理装置、方法及びプログラム |
CN107229550A (zh) * | 2017-05-27 | 2017-10-03 | 郑州云海信息技术有限公司 | 一种linux内核自旋锁死锁检测报告系统和方法 |
CN109669858B (zh) * | 2018-11-22 | 2022-04-12 | 新华三技术有限公司合肥分公司 | 程序死锁的测试方法、装置和设备 |
-
2019
- 2019-11-12 CN CN201911100202.2A patent/CN110851286B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101046756A (zh) * | 2006-03-31 | 2007-10-03 | 国际商业机器公司 | 用于解决计算资源死锁的设备、系统以及方法 |
CN102222015A (zh) * | 2010-04-13 | 2011-10-19 | 三星电子(中国)研发中心 | 检测多线程程序中的死锁的方法及系统 |
CN107247630A (zh) * | 2017-06-05 | 2017-10-13 | 努比亚技术有限公司 | 线程检测方法、终端及计算机可读存储介质 |
CN107704269A (zh) * | 2017-10-16 | 2018-02-16 | 中国银行股份有限公司 | 一种基于区块链生成区块的方法以及系统 |
CN109240811A (zh) * | 2018-08-09 | 2019-01-18 | 武汉斗鱼网络科技有限公司 | 一种任务执行方法和装置 |
Non-Patent Citations (1)
Title |
---|
分布式系统中死锁检测方法的研究;于占虎;《辽宁教育行政学院学报》;20100220(第2期);157-159 * |
Also Published As
Publication number | Publication date |
---|---|
CN110851286A (zh) | 2020-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109586952B (zh) | 服务器扩容方法、装置 | |
CN107656807B (zh) | 一种虚拟资源的自动弹性伸缩方法及装置 | |
CN111159031A (zh) | 应用移动终端自动化测试的方法、计算机装置及计算机可读存储介质 | |
CN111858031B (zh) | 一种集群分布式资源调度方法、装置、设备及存储介质 | |
CN110851286B (zh) | 线程管理方法、装置、电子设备及存储介质 | |
CN116627356A (zh) | 一种大容量存储数据的分布控制方法及系统 | |
CN111949421B (zh) | Sdk调用方法、装置、电子设备和计算机可读存储介质 | |
CN106961490A (zh) | 一种资源监控方法及系统、一种本地服务器 | |
CN108234658B (zh) | 一种感知服务器集群健康状况的方法、装置和服务器 | |
CN112015551B (zh) | 协程池的管理方法及装置 | |
WO2022001295A1 (zh) | 云环境管理方法、云环境管理平台及存储介质 | |
CN110932926B (zh) | 一种容器集群的监控方法、系统及装置 | |
CN113467901A (zh) | 一种任务调度的方法及相关设备 | |
CN111400156A (zh) | 日志分析方法和装置 | |
CN111614747B (zh) | 一种信息处理方法及装置 | |
CN112711386B (zh) | 存储装置的存储容量检测方法、设备及可读存储介质 | |
CN114911668B (zh) | 一种数据资源监控方法及系统 | |
CN116915717B (zh) | 吞吐量分配方法、装置、存储介质及电子设备 | |
CN117915476B (zh) | 一种信息集成系统处理方法及系统 | |
CN111124657B (zh) | 资源管理方法、装置、电子设备及存储介质 | |
WO2024135506A1 (ja) | 情報通知方法及び情報通知装置 | |
CN118656263A (zh) | 异常处理方法、装置、电子设备、存储介质和程序产品 | |
CN113553525A (zh) | 一种界面控制请求处理方法及装置 | |
CN118784527A (zh) | 一种调用链采样方法、装置、设备及介质 | |
CN115220997A (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 |