CN103761182A - 一种死锁检测方法及装置 - Google Patents
一种死锁检测方法及装置 Download PDFInfo
- Publication number
- CN103761182A CN103761182A CN201310732689.2A CN201310732689A CN103761182A CN 103761182 A CN103761182 A CN 103761182A CN 201310732689 A CN201310732689 A CN 201310732689A CN 103761182 A CN103761182 A CN 103761182A
- Authority
- CN
- China
- Prior art keywords
- thread
- resource lock
- resource
- deadlock
- lock
- 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
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了一种死锁检测方法及装置,应用于计算机技术领域。本发明实施例的死锁检测方法中,将各个应用程序的线程/进程在运行过程中使用的资源锁的使用信息储存到死锁检测装置中,这样当储存的资源锁是互斥锁,且资源锁的操作时间大于或等于预置时间,则死锁检测装置会向获取到资源锁的占用信息和/或等待信息,然后判断资源锁是否是死锁,如果是死锁,则输出资源锁为死锁的信息。这样只要是资源锁的操作时间满足一定时间,该资源锁为死锁的可能性就比较大,再进一步地确定该资源锁是否是死锁,而不用从应用程序对应的资源锁图中搜索查找是死锁的资源锁,可以节省了死锁检测的时间和消耗资源,使得检测性能比较高。
Description
技术领域
本发明涉及计算机技术领域,特别涉及死锁检测方法及装置。
背景技术
计算机程序中多进程/线程的死锁是指两个或两个以上的进程/线程在执行过程中,因竞争共享资源而造成的一种互相等待使用共享资源的异常现象,通常会导致整个计算机程序的服务瘫痪(挂死)。一般死锁的发生主要有如下几种类型:相互排斥、循环等待、部分分配和缺少优先权等。
在计算机程序开发和设计过程中,为了避免死锁,需要从预防和检测的环节进行改进,现有技术中对于死锁的检测,主要是监控进程/线程获取资源锁信息,然后建立资源锁图,从资源锁图中判断是否存在死锁。但是对于很多大型的计算机程序来说,代码量较大,运行时涉及的进程和线程众多,则资源锁的需求数量也大,使得生成资源锁图及从资源锁图中搜索等检测死锁的操作需要消耗大量时间和系统资源,性能不是很好。
发明内容
本发明实施例提供死锁检测方法及装置,降低死锁检测的消耗时间和资源。
本发明实施例第一方面提供一种死锁检测装置,包括:
储存单元,用于储存应用程序的资源锁的使用信息,所述使用信息中包括资源锁的占用信息和/或等待信息,及所述资源锁的时间信息;
信息获取单元,用于如果所述储存单元中储存的资源锁是互斥锁,且所述资源锁的操作时间大于或等于预置时间,则获取所述资源锁的占用信息和/或等待信息;所述资源锁的操作时间是根据所述资源锁的时间信息得到的;
锁判断单元,用于根据所述信息获取单元获取的占用信息和/或等待信息判断所述资源锁是否为死锁;
死锁信息输出单元,用于根据所述锁判断单元的判断结果,输出所述资源锁为死锁的信息。
本发明实施例第一方面的第一种可能的实现方式中,所述装置还包括:
信息记录单元,用于当应用程序的线程/进程操作所述资源锁时,将操作的所述资源锁的使用信息记录到所述储存单元中。
结合本发明实施例第一方面的第一种可能实现方式,在本发明实施例第一方面的第二种可能实现方式中,所述信息记录单元,具体包括:
等待记录单元,用于如果应用程序的线程/进程申请所述资源锁对应资源时,将等待所述资源锁的线程/进程的信息和等待时间记录到所述储存单元中;
占用记录单元,用于如果申请所述资源锁对应资源成功时,删除所述储存单元中等待所述资源锁的线程/进程的信息和等待时间,并将占用所述资源锁的线程/进程的信息和占用时间记录到所述储存单元中;
释放记录单元,用于如果释放所述资源锁对应资源时,删除所述储存单元中占用所述资源锁的线程/进程的信息和占用时间。
结合本发明实施例第一方面的第一种可能实现方式,在本发明实施例第一方面的第三种可能实现方式中,所述装置还包括:
调用单元,用于调用系统通用库中的锁操作函数,对所述资源锁对应资源进行操作。
结合本发明实施例第一方面,或第一方面的第一种到第三种可能实现方式中任一种可能实现方式,在本发明实施例第一方面的第四种可能实现方式中,所述锁判断单元具体包括如下至少一个判断单元:第一判断单元、第二判断单元、第三判断单元和第四判断单元,其中:
第一判断单元,用于如果第一线程/进程占用第二线程/进程所等待的资源锁,且所述第二线程/进程占用所述第一线程/进程占用的资源锁,则确定第一线程/进程和第二线程/进程占用的资源锁为死锁;
第二判断单元,用于如果所述第一线程/进程占用执行某项操作的部分资源锁,所述第二线程/进程占用执行所述某项操作的另一部分资源锁,则确定所述部分资源锁和所述另一部分资源锁为死锁;
第三判断单元,用于如果第一线程/进程等待第二线程/进程所占用的资源锁,第二线程/进程等待第三线程/进程所占用的资源锁,第三线程/进程等待第一线程/进程所占用的资源锁,则确定所述第一线程/进程、第二线程/进程和第三线程/进程所占用的资源锁为死锁;
第四判断单元,用于如果第一线程/进程占用某一资源锁的时间超过预置的占用时间,则确定所述第一线程/进程的占用的资源锁为死锁。
结合本发明实施例第一方面,或第一方面的第一种到第三种可能实现方式中任一种可能实现方式,在本发明实施例第一方面的第五种可能实现方式中,所述装置还包括:
释放单元,用于如果所述死锁对应的线程/进程退出时,释放所述死锁对应的资源。
本发明实施例第二方面提供一种死锁检测方法,包括:
如果死锁检测装置中储存的资源锁是互斥锁,且所述资源锁的操作时间大于或等于预置时间,则获取所述资源锁的占用信息和/或等待信息;
根据所述获取的占用信息和/或等待信息判断所述资源锁是否为死锁;
当判断所述资源锁为死锁时,输出所述资源锁为死锁的信息。
本发明实施例第二方面的第一种可能实现方式中,所述获取所述资源锁的占用信息和/或等待信息之前,还包括:
当应用程序的线程/进程操作所述资源锁时,记录操作的所述资源锁的使用信息,所述使用信息中包括占用信息和/或等待信息,及资源锁的时间信息;
所述资源锁的操作时间是根据所述资源锁的时间信息确定的。
结合本方面实施例第二方面的第二种可能实现方式,在本发明实施例第二方面的第三种可能实现方式中,所述记录操作的所述资源锁的使用信息,具体包括:
如果应用程序的线程/进程申请所述资源锁对应资源时,记录等待所述资源锁的线程/进程的信息和等待时间;
如果申请所述资源锁对应资源成功时,删除等待所述资源锁的线程/进程的信息和等待时间,并记录占用所述资源锁的线程/进程的信息和占用时间;
如果所述释放所述资源锁对应资源时,删除占用所述资源锁的线程/进程的信息和占用时间。
结合本方面实施例第二方面的第二种可能实现方式,在本发明实施例第二方面的第四种可能实现方式中,所述记录申请的所述资源锁的使用信息之后,还包括:
调用系统通用库中的锁操作函数,对所述资源锁对应资源进行操作。
结合本发明实施例第二方面,或第二方面的第一种到第三种可能实现方式中任一种可能实现方式,在本发明实施例第二方面的第四种可能实现方式中,所述根据所述获取的占用信息和/或等待信息判断所述资源锁是否为死锁,具体包括:
如果第一线程/进程占用第二线程/进程所等待的资源锁,且第二线程/进程占用所述第一线程/进程占用的资源锁,则确定所述第一线程/进程和第二线程/进程占用的资源锁所述为死锁;或,
如果第一线程/进程占用执行某项操作的部分资源锁,第二线程/进程占用执行所述某项操作的另一部分资源锁,则确定所述部分资源锁和另一部分资源锁为死锁;或,
如果第一线程/进程等待第二线程/进程所占用的资源锁,第二线程/进程等待第三线程/进程所占用的资源锁,第三线程/进程等待第一线程/进程所占用的资源锁,则确定所述第一线程/进程、第二线程/进程和第三线程/进程所占用的资源锁为死锁;或,
如果第一线程/进程占用某一资源锁的时间超过预置的占用时间,则确定所述第一线程/进程的占用的资源锁为死锁。
结合本发明实施例第二方面,或第二方面的第一种到第三种可能实现方式中任一种可能实现方式,在本发明实施例第二方面的第五种可能实现方式中,所述方法还包括:
如果所述死锁对应的线程/进程退出时,释放所述死锁对应的资源。
在本发明实施例的死锁检测方法中,将各个应用程序的线程/进程在运行过程中使用的资源锁的使用信息储存到死锁检测装置中,这样当储存的资源锁是互斥锁,且资源锁的操作时间大于或等于预置时间,则死锁检测装置会向获取到资源锁的占用信息和/或等待信息,然后判断资源锁是否是死锁,如果是死锁,则输出资源锁为死锁的信息。这样只要是资源锁的操作时间满足一定时间,该资源锁为死锁的可能性就比较大,再进一步地确定该资源锁是否是死锁,而不用从应用程序对应的资源锁图中搜索查找是死锁的资源锁,可以节省了死锁检测的时间和系统资源的消耗,使得检测性能比较高;且本发明实施例的死锁检测方法中不需要建立资源图,可以实时获取资源锁的使用信息,这样可以在线实时进行死锁检测。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种死锁检测装置的结构示意图;
图2是本发明实施例提供的另一种死锁检测装置的结构示意图;
图3是本发明实施例提供的另一种死锁检测装置的结构示意图;
图4是本发明实施例提供的另一种死锁检测装置的结构示意图;
图5是本发明应用实施例中提供的一种死锁检测装置的结构示意图;
图6是本发明实施例提供的一种死锁检测方法的流程图;
图7是本发明实施例提供的一种死锁检测方法的流程图;
图8a是本发明应用实施例中两个线程的代码的示意图;
图8b是本发明应用实施例中记录资源锁的使用信息的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种死锁检测装置,结构示意图如图1所示,包括:
储存单元13,用于储存各个应用程序的资源锁的使用信息,该使用信息中包括占用信息和/或等待信息等,还包括资源锁的时间信息,比如开始操作(占用或等待)资源锁的时间等,且储存单元13中还可以包括资源锁的其它信息,比如是用作同步还是用作互斥等信息。
信息获取单元10,用于如果储存单元13中储存的资源锁是互斥锁,且所述资源锁的操作时间大于或等于预置时间,则向共享内容13获取所述资源锁的占用信息和/或等待信息。其中,资源锁的操作时间可以通过开始操作该资源锁的时间得到,即信息获取单元10开始工作的当前时间与储存单元13中储存的开始操作资源锁的时间之差。
可以理解,资源锁是当某个应用程序的线程/进程在运行过程中需要占用资源时,对需要占用的资源进行加锁后得到的资源锁,资源锁可以用作互斥或同步,如果资源锁作用互斥时即为互斥锁;资源锁的操作时间是指对该资源锁对应资源进行调用或等待等操作的时间;资源锁的使用信息具体可以包括资源锁的占用信息比如占用该资源锁的线程/进程的信息和占用时间等,及资源锁的等待信息比如等待该资源锁的线程/进程的信息和等待时间等。
其中,应用程序的进程就是一个活跃着的应用程序,即已经将应用程序的代码放到对应的系统内存空间中,占有了一定的系统资源的应用程序,一个应用程序在没有被调用到内存空间之前叫做为程序,被调用并得到了资源后就可以称为进程,一个进程中可以由许多线程组成,每个线程可以执行不同的任务。一般进程之间的互斥或同步是指一个进程内包括的某个线程与另一进程之间某个线程之间的互斥或同步。
锁判断单元11,用于根据所述信息获取单元10获取的占用信息和/或等待信息判断所述资源锁是否为死锁,其中死锁可以包括如下几种情况的死锁,则锁判断单元11在判断一个资源锁是否为死锁时,具体可以按照如下几种情况来判断:
(1)相互排斥,即一个线程/进程永远独占某一共享资源。
(2)循环等待,比如线程/进程A等待线程/进程B占用的资源锁,而线程/进程B又在等待线程/进程C占用的资源锁,而线程/进程C又在等待线程/进程A占用的资源锁,这样就形成了循环等待。
(3)部分分配,即资源锁被部分分配。例如,线程/进程A和B都需要执行同一个操作比如访问一个文件,并且在访问文件时要用到打印机,而线程/进程A获得了文件资源,线程/进程B获得了打印机资源,使得线程/进程A和B不能获得全部的资源。
(4)缺少优先权,即一个线程/进程访问了某个资源,但是一直不释放该资源,使得该线程/进程处于阻塞状态。
死锁信息输出单元12,用于根据所述锁判断单元11的判断结果,输出所述资源锁为死锁的信息。该死锁信息输出单元12可以通知用户退出死锁对应的线程/进程,并可以将储存单元13中对应的资源锁设置为死锁。
可见,在本发明实施例的死锁检测装置中,将各个应用程序的线程/进程在运行过程中使用的资源锁的使用信息储存到共享内容13中,这样当储存单元13中储存的资源锁是互斥锁,且资源锁的操作时间大于或等于预置时间,则信息获取单元10会向储存单元13获取到资源锁的占用信息和/或等待信息,然后锁判断单元11会判断资源锁是否是死锁,如果是死锁,则死锁信息输出单元12输出资源锁为死锁的信息。这样只要是资源锁的操作时间满足一定时间,该资源锁为死锁的可能性就比较大,再进一步地确定该资源锁是否是死锁,而不用从应用程序对应的资源锁图中搜索查找是死锁的资源锁,可以节省了死锁检测的时间和系统资源的消耗,使得检测性能比较高;且本发明实施例的死锁检测方法中不需要建立资源图,可以实时获取资源锁的使用信息,这样可以在线实时进行死锁检测。
参考图2所示,在一个具体的实施例中,死锁检测装置除了可以包括如图1所示的结构外,还可以包括信息记录单元14和调用单元15,其中:
信息记录单元14,用于当应用程序的线程/进程操作所述资源锁时,将操作的所述资源锁的使用信息的储存单元13中。其中该信息记录单元14又具体可以通过等待记录单元140、占用记录单元141和释放记录单元142,具体地:
等待记录单元140,用于如果应用程序的线程/进程申请所述资源锁对应资源时,将等待所述资源锁的线程/进程的信息和等待时间记录到储存单元13中;
占用记录单元141,用于如果申请所述资源锁对应资源成功时,删除储存单元13中等待所述资源锁的线程/进程的信息和等待时间,并将占用所述资源锁的线程/进程的信息和占用时间记录到共享内容13中;
释放记录单元142,用于如果释放所述资源锁对应资源时,删除储存单元13中占用所述资源锁的线程/进程的信息和占用时间。
调用单元15,用于调用系统通用库中的锁操作函数,对所述资源锁对应资源进行操作。
在本实施例中,当应用程序的线程/进程在准备开始操作资源锁时,信息记录单元14会通过等待记录单元140、占用记录单元141和释放记录单元142记录资源锁的使用信息到储存单元13中;然后信息获取单元10会从储存单元13中获取资源锁的等待信息和/或占用信息。本实施例中,当信息记录单元14中包括的各个单元记录使用信息后,调用单元15就可以开始真正调用锁操作函数,使得应用程序的线程/进程正常运行。
参考图3所示,在另一个具体的实施例中,死锁检测装置除了可以包括如图1所示的结构外,还可以包括释放单元16,且其中的锁判断单元11具体可以通过如下至少一个判断单元来实现:第一判断单元110、第二判断单元111、第三判断单元112和第四判断单元113,具体地:
第一判断单元110,用于如果第一线程/进程占用第二线程/进程所等待的资源锁,且所述第二线程/进程占用所述第一线程/进程占用的资源锁,则确定第一线程/进程和第二线程/进程占用的资源锁所述为死锁,即相互排斥的死锁;
第二判断单元111,用于如果第一线程/进程占用执行某项操作的部分资源锁,第二线程/进程占用执行所述某项操作的另一部分资源锁,则确定所述部分资源锁和另一部分资源锁为死锁,即部分分配的死锁;其中部分资源锁和另一部分资源锁结合起来则为执行某项操作的全部资源锁。
第三判断单元112,用于如果第一线程/进程等待第二线程/进程所占用的资源锁,第二线程/进程等待第三线程/进程所占用的资源锁,第三线程/进程等待第一线程/进程所占用的资源锁,则确定所述第一线程/进程、第二线程/进程和第三线程/进程所占用的资源锁为死锁,即循环等待的死锁;
第四判断单元113,用于如果第一线程/进程占用某一资源锁的时间超过预置的占用时间,则确定所述第一线程/进程的占用的资源锁为死锁,即缺少优先权的死锁。
释放单元16,用于如果所述死锁对应的线程/进程退出时,释放所述死锁对应的资源。
需要说明的是,本发明实施例中第一线程/进程、第二线程/进程和第三线程/进程并不表示顺序关系,而是为了说明线程/进程的不同,且第一判断单元到第四判断单元也不表示顺序关系,只是为了说明不同的判断单元。
本实施例中,当信息获取单元10获取了资源锁的占用信息和/或等待信息后,锁判断单元11中第一到第四判断单元就会根据信息获取单元10获取的信息来判断是否是死锁,如果是死锁,则死锁信息输出单元12会输出死锁的信息。且对于有些资源锁来说,当占用该资源锁的应用程序的线程/进程退出时,并不会自动释放该资源锁,则会造成该资源锁为死锁的情况,这样本实施例中,如果死锁信息输出单元12输出死锁的信息后,可以触发释放单元16释放死锁对应的资源,从而避免了储存单元13中死锁的情况。
本发明实施例还提供一种死锁检测装置,结构示意图如图4所示,包括:包括分别连接到总线上的存储器20、处理器21、输入装置23和输出装置24,其中:
存储器20中用来储存从输入装置23输入的数据,且还可以储存处理器21处理数据的必要文件等信息;本实施例中,输入装置23和输出装置24可以包括死锁检测装置外界的设备比如显示器、键盘、鼠标和打印机等,且在有些具体的实施例中输入装置23和输出装置24还可以包括死锁检测装置与其它通信设备进行通信的接口。
本实施例中,存储器20用于储存各个应用程序的资源锁的使用信息,该使用信息中包括占用信息和/或等待信息等,还包括资源锁的时间信息,比如开始操作(占用或等待)资源锁的时间等,且还可以包括资源锁的其它信息,比如是用作同步还是用作互斥等信息。
处理器21,用于如果存储器20中储存的资源锁是互斥锁,且所述资源锁的操作时间大于或等于预置时间,则向存储器20获取所述资源锁的占用信息和/或等待信息;根据获取的占用信息和/或等待信息判断所述资源锁是否为死锁,控制输出装置24输出所述资源锁为死锁的信息。这样只要是资源锁的操作时间满足一定时间,该资源锁为死锁的可能性就比较大,再进一步地确定该资源锁是否是死锁,而不用从应用程序对应的资源锁图中搜索查找是死锁的资源锁,可以节省了死锁检测的时间和系统资源的消耗,使得检测性能比较高;且本发明实施例的死锁检测方法中不需要建立资源图,可以实时获取资源锁的使用信息,这样可以在线实时进行死锁检测。
其中,资源锁的操作时间可以通过开始操作该资源锁的时间得到,即处理器21开始获取资源锁的占用信息和/或等待信息的当前时间与存储器20中储存的开始操作资源锁的时间之差。且处理器21在判断资源锁是否为死锁时,可以按照如下死锁的情况的来判断:相互排斥的死锁、循环等待的死锁、部分分配的死锁和缺少优先权的死锁等。另外,处理器21可以通知用户退出死锁对应的线程/进程,并可以将存储器20中对应的资源锁设置为死锁。
进一步地,在一个具体的实施例中,处理器21,还用于在应用程序的线程/进程准备开始操作资源锁时,会将操作的所述资源锁的使用信息记录到存储器20中;当记录使用信息完成后,处理器21就可以开始真正调用锁操作函数,使得应用程序的线程/进程正常运行,具体地调用系统通用库中的锁操作函数,对所述资源锁对应资源进行操作。其中,处理器21在记录资源锁的使用信息时,具体用于如果应用程序的线程/进程申请所述资源锁对应资源时,将等待所述资源锁的线程/进程的信息和等待时间记录到存储器20中;如果申请所述资源锁对应资源成功时,删除存储器20中等待所述资源锁的线程/进程的信息和等待时间,并将占用所述资源锁的线程/进程的信息和占用时间记录到存储器20中;如果所述释放所述资源锁对应资源时,删除存储器20中占用所述资源锁的线程/进程的信息和占用时间。
进一步地,在另一个具体的实施例中,处理器21在判断资源锁是否是死锁时,具体用于如果第一线程/进程占用第二线程/进程所等待的资源锁,且第二线程/进程占用所述第一线程/进程占用的资源锁,则确定第一线程/进程和第二线程/进程占用的资源锁所述为死锁,即相互排斥的死锁;如果第一线程/进程占用执行某项操作的部分资源锁,第二线程/进程占用执行所述某项操作的另一部分资源锁,则确定所述部分资源锁和另一部分资源锁为死锁,即部分分配的死锁;如果第一线程/进程等待第二线程/进程所占用的资源锁,第二线程/进程等待第三线程/进程所占用的资源锁,第三线程/进程等待第一线程/进程所占用的资源锁,则确定所述第一线程/进程、第二线程/进程和第三线程/进程所占用的资源锁为死锁,即循环等待的死锁;如果第一线程/进程占用某一资源锁的时间超过预置的占用时间,则确定所述第一线程/进程的占用的资源锁为死锁,即缺少优先权的死锁。
且对于有些资源锁来说,当占用该资源锁的应用程序的线程/进程退出时,并不会自动释放该资源锁,则会造成该资源锁为死锁的情况,这样本实施例的处理器21,还可以用于如果所述死锁对应的线程/进程退出时,释放所述死锁对应的资源。
以下以一个具体的实施例来说明本发明实施例提供的死锁检测装置,结构示意图如图5所示,包括:内核(kernel)、应用模块、系统通用库、动态链接模块、监控锁处理(monitor lock process)模块、共享内存和死锁处理模块,其中:
(1)内核是死锁检测装置的硬件结构;应用模块是执行应用程序的线程/进程的模块。
(2)在共享内存中储存着资源锁的使用信息,且还可以储存着资源锁的描述信息,且该共享内存时死锁检测装置中的部分存储空间,其中,可以用作互斥的资源锁可以包括表1中所示的几种类型:
表1
(3)当应用模块在运行线程/进程时,需要操作资源锁,会先触发动态链接模块将该资源锁的使用信息记录到共享内存中,该动态链接模块可以创建、申请和释放资源锁。
其中对于信号量和自旋锁的使用信息的储存,该动态链接模块可以先申请一个数据结构记录该类型资源锁的使用信息,用唯一的关键字(key)和名称标识;而对于其它类型的资源锁来说,应用模块会自动将资源锁的使用信息记录在该应用模块执行应用程序对应的信息中,比如占用或等待资源锁的线程/进程的信息等,则动态链接模块可以只将操作时间记录到共享内存中,在用到占用或等待该资源锁的线程/进程的信息时,需要到该应用程序对应的信息中获取。
(4)当动态链接模块完成使用信息的记录后,会向调用系统通用库(比如Glibc库)中的锁操作函数,真正地执行锁操作。
(5)监控锁处理模块可以创建共享内存,并轮询共享内存中用作互斥的资源锁的使用信息,判定是否有资源锁的操作事件超过预置时间,如果超过,则需要从共享内存中获取到资源锁的占用信息和/或等待信息,并进一步地判断该资源锁是否是死锁;如果是死锁,可以发送信号通知应用模块将相关的死锁信息或线程/进程调用栈输出到日志。
其中,对于某一种类型的资源锁即信号量,既可以用于线程/进程间同步也可以用于线程/进程间互斥,该监控锁处理模块只需要对用作互斥的信号量进行判定,而用作同步的资源锁不会造成死锁。具体地,当一个信号量的描述信息中,资源计数初始值为0时,在此信号量用作同步,否则用作互斥。
(6)当监控锁处理模块在判定某一资源锁为死锁后,可以通知应用模块将死锁对应的线程/进程退出,同时也可以将共享内存中该死锁的信息储存,以用于问题定位。
对于有些资源锁比如Posix信号量对应资源,不会随着相应线程/进程的退出而自动释放,则需要监控锁处理模块发送信号通知应用模块来释放该死锁对应的资源,从而避免造成死锁。
需要说明的是,由于上述监控锁处理模块和动态链接模块都会访问共享内存中的资源锁的信息,则对共享内存中的资源锁的操作会造成冲突,本实施例中,当监控锁处理模块和动态链接模块某一个模块在访问共享内存中的资源锁的信息时,可以为该资源锁设置UNDO属性,来防止另一个模块对资源锁信息进行操作而造成的死锁。
本发明实施例还提供一种死锁检测方法,主要是检测应用程序的线程/进程在运行过程中所使用的资源锁是否是死锁的方法,本实施例的方法是上述的死锁检测装置所执行的方法,流程图如图6所示,包括:
步骤101,对于死锁检测装置中储存的资源锁是互斥锁,判断资源锁的操作时间是否大于或等于预置时间,如果大于或等于,则执行步骤102,如果小于,则说明资源锁是死锁的可能性比较小,则对于另一个互斥锁返回执行步骤101。
步骤102,获取资源锁的占用信息和/或等待信息。
可以理解,在死锁检测装置中储存着各个资源锁的使用信息,该使用信息中包括占用信息和/或等待信息等,还包括资源锁的时间信息,比如开始操作(占用或等待)资源锁的时间等,且还可以包括资源锁的其它信息,比如是用作同步还是用作互斥等信息。死锁检测装置可以轮询这些资源锁的使用信息,根据储存的开始操作资源锁的时间确定资源锁的操作时间,即为当前时间与储存的开始操作资源锁的时间之差,从而判断该操作时间是否大于或等于预置时间。
步骤103,根据步骤102中获取的占用信息和/或等待信息判断资源锁是否为死锁,如果是,则执行步骤104,如果不是,则对于另一个互斥锁返回执行步骤101。其中死锁检测装置可以根据步骤102中获取的信息,并结合如下几种死锁的情况来判断一个资源锁是否是死锁:相互排斥的死锁、循环等待的死锁、部分分配的死锁和缺少优先权的死锁等。
步骤104,输出资源锁为死锁的信息。
需要说明的是,对于有些资源锁来说,当占用该资源锁的应用程序的线程/进程退出时,并不会自动释放该资源锁,则会造成该资源锁为死锁的情况,这样本实施例中,如果死锁对应的线程/进程退出时,死锁检测装置可以释放死锁对应的资源,从而避免了死锁的情况。
可见,在本发明实施例的死锁检测方法中,将各个应用程序的线程/进程在运行过程中使用的资源锁的使用信息储存到死锁检测装置中,这样当储存的资源锁是互斥锁,且资源锁的操作时间大于或等于预置时间,则死锁检测装置会向获取到资源锁的占用信息和/或等待信息,然后判断资源锁是否是死锁,如果是死锁,则输出资源锁为死锁的信息。这样只要是资源锁的操作时间满足一定时间,该资源锁为死锁的可能性就比较大,再进一步地确定该资源锁是否是死锁,而不用从应用程序对应的资源锁图中搜索查找是死锁的资源锁,可以节省了死锁检测的时间和系统资源的消耗,使得检测性能比较高;且本发明实施例的死锁检测方法中不需要建立资源图,可以实时获取资源锁的使用信息,这样可以在线实时进行死锁检测。
参考图7所示,在一个具体的实施例中,死锁检测装置在执行上述步骤101之前,还可以执行如下步骤105,且在执行完步骤105之后,还可以执行步骤106来真正调用锁操作函数:
步骤105,当应用程序的线程/进程操作资源锁时,记录操作的资源锁的使用信息,该使用信息中包括占用信息和/或等待信息,及开始操作资源锁的时间。具体地,死锁检测装置可以通过如下几种情况来实现使用信息的记录,即如果应用程序的线程/进程申请资源锁对应资源时,执行步骤A;如果申请资源锁对应资源成功时,执行步骤B,如果释放资源锁对应资源时,执行步骤C,其中:
A:记录等待资源锁的线程/进程的信息和等待时间;
B:删除等待资源锁的线程/进程的信息和等待时间,并记录占用所述资源锁的线程/进程的信息和占用时间;
C:删除占用资源锁的线程/进程的信息和占用时间。
步骤106,调用系统通用库中的锁操作函数,对资源锁对应资源进行操作。
需要说明的是,本实施例中,步骤101到104,与步骤106之间并没有绝对的顺序关系,可以同时执行,也可以顺序执行,图7中所示的只是其中一种具体的实现方案。
在另一个具体的实施例中,死锁检测装置在执行上述步骤103中的判断操作时,具体可以通过如下几种方式来确定:
(1)如果第一线程/进程占用第二线程/进程所等待的资源锁,且第二线程/进程占用第一线程/进程占用的资源锁,则确定第一线程/进程和第二线程/进程占用的资源锁为死锁。例如:资源锁A的占用信息为第一线程/进程,等待信息为第二线程/进程;且资源锁B的占用信息为第二线程/进程,而等待信息为第一线程/进程,则资源锁A和B为死锁。
(2)如果第一线程/进程占用执行某项操作的部分资源锁,第二线程/进程占用执行所述某项操作的另一部分资源锁,则确定部分资源锁和另一部分资源锁为死锁。例如,部分资源锁A的占用信息为第一线程/进程,而另一部分资源锁B的占用信息为第二线程/进程,但是资源锁A和B是执行某项操作的必须资源锁,则资源锁A和B是死锁。
(3)如果第一线程/进程等待第二线程/进程所占用的资源锁,第二线程/进程等待第三线程/进程所占用的资源锁,第三线程/进程等待第一线程/进程所占用的资源锁,则确定第一线程/进程、第二线程/进程和第三线程/进程所占用的资源锁为死锁。例如:资源锁A的占用信息为第二线程/进程,等待信息为第一线程/进程;资源锁B的占用信息为第三线程/进程,等待信息为第二线程/进程;资源锁C的占用信息为第一线程/进程,等待信息为第三线程/进程,则资源锁A、B和C为死锁。
(4)如果第一线程/进程占用某一资源锁的时间超过预置的占用时间,确定第一线程/进程的占用的资源锁为死锁。例如,资源锁A的占用信息包括第一线程/进程,和占用时间,如果占用时间超过预置的占用时间,则该资源锁A为死锁。这里预置的占用时间可以与上述预置时间一样,也可以不同。
以下以一个具体的应用例子来说明本发明实施例的死锁检测方法,如图8a所示的两个线程即APP1_Process和APP2_Process的代码,8b所示为死锁检测装置记录资源锁的使用信息的示意图,具体地:
对于这两个线程,当线程APP1_Process执行到第6行即准备开始申请资源锁pSemB时,则死锁检测装置先记录记录L36,即资源锁pSemB的等待信息,包括等待的线程APP1_Process、开始申请时刻T0(即开始等待时间)和执行语句p7;当该资源锁pSemB的资源申请成功后,删除记录L36,然后增加记录L43,即资源锁pSemB的占用信息,包括占用的线程APP1_Process和开始占用时间T0。
同样当线程APP2_Process执行到第22行即准备开始申请资源锁pSemA时,则死锁检测装置先记录记录L37,即资源锁pSemA的等待信息,包括等待的线程APP2_Process、开始申请时刻T1和执行语句p23;当该资源锁pSemA的资源申请成功后,删除记录L37,然后增加记录L44,即资源锁pSemA的占用信息,包括占用的线程APP2_Process和开始占用时间T1。
按照上述方法死锁检测装置将这两个线程在操作资源锁时对应的使用信息记录下来,具体见图8b所示,且在记录完每一条记录后,即可触发真正地调用锁操作函数,对资源锁进行一定操作。上述线程APP1_Process和APP2_Process均因为互相等待对方所占用的资源锁,因此造成资源锁pSemA和pSemB为死锁。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM)、随机存取存储器(RAM)、磁盘或光盘等。
以上对本发明实施例所提供的死锁检测方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (12)
1.一种死锁检测装置,其特征在于,包括:
储存单元,用于储存应用程序的资源锁的使用信息,所述使用信息中包括资源锁的占用信息和/或等待信息,及所述资源锁的时间信息;
信息获取单元,用于如果所述储存单元中储存的资源锁是互斥锁,且所述资源锁的操作时间大于或等于预置时间,则获取所述资源锁的占用信息和/或等待信息;所述资源锁的操作时间是根据所述资源锁的时间信息得到的;
锁判断单元,用于根据所述信息获取单元获取的占用信息和/或等待信息判断所述资源锁是否为死锁;
死锁信息输出单元,用于根据所述锁判断单元的判断结果,输出所述资源锁为死锁的信息。
2.如权利要求1所述的装置,其特征在于,还包括:
信息记录单元,用于当应用程序的线程/进程操作所述资源锁时,将操作的所述资源锁的使用信息记录到所述储存单元中。
3.如权利要求2所述的装置,其特征在于,所述信息记录单元,具体包括:
等待记录单元,用于如果应用程序的线程/进程申请所述资源锁对应资源时,将等待所述资源锁的线程/进程的信息和等待时间记录到所述储存单元中;
占用记录单元,用于如果申请所述资源锁对应资源成功时,删除所述储存单元中等待所述资源锁的线程/进程的信息和等待时间,并将占用所述资源锁的线程/进程的信息和占用时间记录到所述储存单元中;
释放记录单元,用于如果释放所述资源锁对应资源时,删除所述储存单元中占用所述资源锁的线程/进程的信息和占用时间。
4.如权利要求2所述的装置,其特征在于,还包括:
调用单元,用于调用系统通用库中的锁操作函数,对所述资源锁对应资源进行操作。
5.如权利要求1至4任一项所述的装置,其特征在于,所述锁判断单元具体包括如下至少一个判断单元:第一判断单元、第二判断单元、第三判断单元和第四判断单元,其中:
第一判断单元,用于如果第一线程/进程占用第二线程/进程所等待的资源锁,且所述第二线程/进程占用所述第一线程/进程占用的资源锁,则确定第一线程/进程和第二线程/进程占用的资源锁为死锁;
第二判断单元,用于如果所述第一线程/进程占用执行某项操作的部分资源锁,所述第二线程/进程占用执行所述某项操作的另一部分资源锁,则确定所述部分资源锁和所述另一部分资源锁为死锁;
第三判断单元,用于如果第一线程/进程等待第二线程/进程所占用的资源锁,第二线程/进程等待第三线程/进程所占用的资源锁,第三线程/进程等待第一线程/进程所占用的资源锁,则确定所述第一线程/进程、第二线程/进程和第三线程/进程所占用的资源锁为死锁;
第四判断单元,用于如果第一线程/进程占用某一资源锁的时间超过预置的占用时间,则确定所述第一线程/进程的占用的资源锁为死锁。
6.如权利要求1至4任一项所述的装置,其特征在于,还包括:
释放单元,用于如果所述死锁对应的线程/进程退出时,释放所述死锁对应的资源。
7.一种死锁检测方法,其特征在于,包括:
如果死锁检测装置中储存的资源锁是互斥锁,且所述资源锁的操作时间大于或等于预置时间,则获取所述资源锁的占用信息和/或等待信息;
根据所述获取的占用信息和/或等待信息判断所述资源锁是否为死锁;
当判断所述资源锁为死锁时,输出所述资源锁为死锁的信息。
8.如权利要求7所述的方法,其特征在于,所述获取所述资源锁的占用信息和/或等待信息之前,还包括:
当应用程序的线程/进程操作所述资源锁时,记录操作的所述资源锁的使用信息,所述使用信息中包括占用信息和/或等待信息,及资源锁的时间信息;
所述资源锁的操作时间是根据所述资源锁的时间信息确定的。
9.如权利要求8所述的方法,其特征在于,所述记录操作的所述资源锁的使用信息,具体包括:
如果应用程序的线程/进程申请所述资源锁对应资源时,记录等待所述资源锁的线程/进程的信息和等待时间;
如果申请所述资源锁对应资源成功时,删除等待所述资源锁的线程/进程的信息和等待时间,并记录占用所述资源锁的线程/进程的信息和占用时间;
如果所述释放所述资源锁对应资源时,删除占用所述资源锁的线程/进程的信息和占用时间。
10.如权利要求8所述的方法,其特征在于,所述记录申请的所述资源锁的使用信息之后,还包括:
调用系统通用库中的锁操作函数,对所述资源锁对应资源进行操作。
11.如权利要求7至10任一项所述的方法,其特征在于,所述根据所述获取的占用信息和/或等待信息判断所述资源锁是否为死锁,具体包括:
如果第一线程/进程占用第二线程/进程所等待的资源锁,且第二线程/进程占用所述第一线程/进程占用的资源锁,则确定所述第一线程/进程和第二线程/进程占用的资源锁所述为死锁;或,
如果第一线程/进程占用执行某项操作的部分资源锁,第二线程/进程占用执行所述某项操作的另一部分资源锁,则确定所述部分资源锁和另一部分资源锁为死锁;或,
如果第一线程/进程等待第二线程/进程所占用的资源锁,第二线程/进程等待第三线程/进程所占用的资源锁,第三线程/进程等待第一线程/进程所占用的资源锁,则确定所述第一线程/进程、第二线程/进程和第三线程/进程所占用的资源锁为死锁;或,
如果第一线程/进程占用某一资源锁的时间超过预置的占用时间,则确定所述第一线程/进程的占用的资源锁为死锁。
12.如权利要求7至10任一项所述的方法,其特征在于,所述方法还包括:
如果所述死锁对应的线程/进程退出时,释放所述死锁对应的资源。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310732689.2A CN103761182A (zh) | 2013-12-26 | 2013-12-26 | 一种死锁检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310732689.2A CN103761182A (zh) | 2013-12-26 | 2013-12-26 | 一种死锁检测方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103761182A true CN103761182A (zh) | 2014-04-30 |
Family
ID=50528424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310732689.2A Pending CN103761182A (zh) | 2013-12-26 | 2013-12-26 | 一种死锁检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103761182A (zh) |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104915289A (zh) * | 2015-05-12 | 2015-09-16 | 中国工商银行股份有限公司 | 一种金融应用系统后台进程异常检测方法及装置 |
CN105389226A (zh) * | 2015-10-23 | 2016-03-09 | 上海斐讯数据通信技术有限公司 | 一种访问共享内存异常的系统及方法 |
CN105511969A (zh) * | 2015-11-25 | 2016-04-20 | 中国船舶工业系统工程研究院 | 一种跨进程的线程间进行互斥的方法 |
CN105550322A (zh) * | 2015-12-15 | 2016-05-04 | 北京金山安全软件有限公司 | 一种文件访问方法、装置及电子设备 |
CN107247630A (zh) * | 2017-06-05 | 2017-10-13 | 努比亚技术有限公司 | 线程检测方法、终端及计算机可读存储介质 |
CN107391265A (zh) * | 2016-03-25 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 用于进程中检测死锁的方法和设备 |
CN107450990A (zh) * | 2017-07-18 | 2017-12-08 | 浙江大华技术股份有限公司 | 一种基于raii的死锁检测方法及装置 |
CN107885488A (zh) * | 2016-09-29 | 2018-04-06 | 微软技术许可有限责任公司 | 意图和具有意图的锁 |
CN107967181A (zh) * | 2017-12-19 | 2018-04-27 | 北京小米移动软件有限公司 | 临界区的控制方法及装置 |
CN108038030A (zh) * | 2017-11-30 | 2018-05-15 | 努比亚技术有限公司 | 移动终端重启定位方法、移动终端及计算机可读存储介质 |
CN108052391A (zh) * | 2017-11-30 | 2018-05-18 | 努比亚技术有限公司 | 基于线程死锁的内存优化方法、移动终端及可读存储介质 |
CN108182114A (zh) * | 2017-12-27 | 2018-06-19 | 努比亚技术有限公司 | 一种资源分配方法、终端及计算机可读存储介质 |
CN108205464A (zh) * | 2016-12-20 | 2018-06-26 | 阿里巴巴集团控股有限公司 | 一种数据库死锁的处理方法、装置和数据库系统 |
WO2019006997A1 (zh) * | 2017-07-01 | 2019-01-10 | 武汉斗鱼网络科技有限公司 | 程序死锁检测方法、存储介质、设备及系统 |
CN109189582A (zh) * | 2018-07-20 | 2019-01-11 | 新华三技术有限公司合肥分公司 | 一种检测信号量超时原因的方法及装置 |
CN109445951A (zh) * | 2018-10-31 | 2019-03-08 | 新华三技术有限公司 | 一种信息处理方法及装置 |
CN109669858A (zh) * | 2018-11-22 | 2019-04-23 | 新华三技术有限公司合肥分公司 | 程序死锁的测试方法、装置和设备 |
CN110083456A (zh) * | 2019-03-13 | 2019-08-02 | 浙江工商大学 | 一种针对多线程软件的死锁预防方法 |
CN110597640A (zh) * | 2019-08-29 | 2019-12-20 | 深圳市优必选科技股份有限公司 | 进程间的数据传输方法、装置、终端及计算机存储介质 |
CN110781016A (zh) * | 2019-10-30 | 2020-02-11 | 支付宝(杭州)信息技术有限公司 | 一种数据处理方法、装置、设备及介质 |
CN111538599A (zh) * | 2020-04-23 | 2020-08-14 | 杭州涂鸦信息技术有限公司 | 一种基于linux的多线程死锁问题定位方法及系统 |
CN112559195A (zh) * | 2020-12-25 | 2021-03-26 | 恒生电子股份有限公司 | 数据库死锁的检测方法、装置、测试终端及介质 |
CN113691434A (zh) * | 2021-08-31 | 2021-11-23 | 深圳云天励飞技术股份有限公司 | 数据传输系统、方法、电子设备及存储介质 |
CN114035970A (zh) * | 2022-01-10 | 2022-02-11 | 南京云信达科技有限公司 | 一种数据并发竞争冲突检测分析方法及系统 |
CN114860463A (zh) * | 2022-03-31 | 2022-08-05 | 威胜信息技术股份有限公司 | 一种嵌入式实时操作系统死锁自动检测方法、系统及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1021098A (ja) * | 1996-06-29 | 1998-01-23 | Nec Corp | 排他制御装置 |
CN1629821A (zh) * | 2003-12-19 | 2005-06-22 | 华为技术有限公司 | 一种多线程处理器线程死锁检测的方法及其系统 |
US20100333110A1 (en) * | 2009-06-30 | 2010-12-30 | International Business Machines Corporation | Deadlock detection method and system for parallel programs |
-
2013
- 2013-12-26 CN CN201310732689.2A patent/CN103761182A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1021098A (ja) * | 1996-06-29 | 1998-01-23 | Nec Corp | 排他制御装置 |
CN1629821A (zh) * | 2003-12-19 | 2005-06-22 | 华为技术有限公司 | 一种多线程处理器线程死锁检测的方法及其系统 |
US20100333110A1 (en) * | 2009-06-30 | 2010-12-30 | International Business Machines Corporation | Deadlock detection method and system for parallel programs |
Cited By (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104915289B (zh) * | 2015-05-12 | 2018-01-26 | 中国工商银行股份有限公司 | 一种金融应用系统后台进程异常检测方法及装置 |
CN104915289A (zh) * | 2015-05-12 | 2015-09-16 | 中国工商银行股份有限公司 | 一种金融应用系统后台进程异常检测方法及装置 |
CN105389226A (zh) * | 2015-10-23 | 2016-03-09 | 上海斐讯数据通信技术有限公司 | 一种访问共享内存异常的系统及方法 |
CN105389226B (zh) * | 2015-10-23 | 2018-07-13 | 上海斐讯数据通信技术有限公司 | 一种访问共享内存异常的系统及方法 |
CN105511969A (zh) * | 2015-11-25 | 2016-04-20 | 中国船舶工业系统工程研究院 | 一种跨进程的线程间进行互斥的方法 |
CN105511969B (zh) * | 2015-11-25 | 2020-05-19 | 中国船舶工业系统工程研究院 | 一种跨进程的线程间进行互斥的方法 |
CN105550322A (zh) * | 2015-12-15 | 2016-05-04 | 北京金山安全软件有限公司 | 一种文件访问方法、装置及电子设备 |
CN107391265B (zh) * | 2016-03-25 | 2020-12-04 | 阿里巴巴集团控股有限公司 | 用于进程中检测死锁的方法和设备 |
CN107391265A (zh) * | 2016-03-25 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 用于进程中检测死锁的方法和设备 |
CN107885488A (zh) * | 2016-09-29 | 2018-04-06 | 微软技术许可有限责任公司 | 意图和具有意图的锁 |
US11327905B2 (en) | 2016-09-29 | 2022-05-10 | Microsoft Technology Licensing, Llc | Intents and locks with intent |
CN108205464B (zh) * | 2016-12-20 | 2022-05-06 | 阿里云计算有限公司 | 一种数据库死锁的处理方法、装置和数据库系统 |
CN108205464A (zh) * | 2016-12-20 | 2018-06-26 | 阿里巴巴集团控股有限公司 | 一种数据库死锁的处理方法、装置和数据库系统 |
CN107247630A (zh) * | 2017-06-05 | 2017-10-13 | 努比亚技术有限公司 | 线程检测方法、终端及计算机可读存储介质 |
WO2019006997A1 (zh) * | 2017-07-01 | 2019-01-10 | 武汉斗鱼网络科技有限公司 | 程序死锁检测方法、存储介质、设备及系统 |
CN107450990A (zh) * | 2017-07-18 | 2017-12-08 | 浙江大华技术股份有限公司 | 一种基于raii的死锁检测方法及装置 |
CN108052391A (zh) * | 2017-11-30 | 2018-05-18 | 努比亚技术有限公司 | 基于线程死锁的内存优化方法、移动终端及可读存储介质 |
CN108038030A (zh) * | 2017-11-30 | 2018-05-15 | 努比亚技术有限公司 | 移动终端重启定位方法、移动终端及计算机可读存储介质 |
CN107967181A (zh) * | 2017-12-19 | 2018-04-27 | 北京小米移动软件有限公司 | 临界区的控制方法及装置 |
CN108182114A (zh) * | 2017-12-27 | 2018-06-19 | 努比亚技术有限公司 | 一种资源分配方法、终端及计算机可读存储介质 |
CN108182114B (zh) * | 2017-12-27 | 2021-04-16 | 努比亚技术有限公司 | 一种资源分配方法、终端及计算机可读存储介质 |
CN109189582A (zh) * | 2018-07-20 | 2019-01-11 | 新华三技术有限公司合肥分公司 | 一种检测信号量超时原因的方法及装置 |
CN109189582B (zh) * | 2018-07-20 | 2020-09-15 | 新华三技术有限公司合肥分公司 | 一种检测信号量超时原因的方法及装置 |
CN109445951A (zh) * | 2018-10-31 | 2019-03-08 | 新华三技术有限公司 | 一种信息处理方法及装置 |
CN109445951B (zh) * | 2018-10-31 | 2020-09-25 | 新华三技术有限公司 | 一种信息处理方法及装置 |
CN109669858A (zh) * | 2018-11-22 | 2019-04-23 | 新华三技术有限公司合肥分公司 | 程序死锁的测试方法、装置和设备 |
CN110083456A (zh) * | 2019-03-13 | 2019-08-02 | 浙江工商大学 | 一种针对多线程软件的死锁预防方法 |
CN110597640A (zh) * | 2019-08-29 | 2019-12-20 | 深圳市优必选科技股份有限公司 | 进程间的数据传输方法、装置、终端及计算机存储介质 |
CN110781016A (zh) * | 2019-10-30 | 2020-02-11 | 支付宝(杭州)信息技术有限公司 | 一种数据处理方法、装置、设备及介质 |
CN111538599A (zh) * | 2020-04-23 | 2020-08-14 | 杭州涂鸦信息技术有限公司 | 一种基于linux的多线程死锁问题定位方法及系统 |
CN112559195A (zh) * | 2020-12-25 | 2021-03-26 | 恒生电子股份有限公司 | 数据库死锁的检测方法、装置、测试终端及介质 |
CN112559195B (zh) * | 2020-12-25 | 2021-12-21 | 恒生电子股份有限公司 | 数据库死锁的检测方法、装置、测试终端及介质 |
CN113691434A (zh) * | 2021-08-31 | 2021-11-23 | 深圳云天励飞技术股份有限公司 | 数据传输系统、方法、电子设备及存储介质 |
CN113691434B (zh) * | 2021-08-31 | 2022-09-20 | 深圳云天励飞技术股份有限公司 | 数据传输系统、方法、电子设备及存储介质 |
CN114035970A (zh) * | 2022-01-10 | 2022-02-11 | 南京云信达科技有限公司 | 一种数据并发竞争冲突检测分析方法及系统 |
CN114860463A (zh) * | 2022-03-31 | 2022-08-05 | 威胜信息技术股份有限公司 | 一种嵌入式实时操作系统死锁自动检测方法、系统及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103761182A (zh) | 一种死锁检测方法及装置 | |
US9619430B2 (en) | Active non-volatile memory post-processing | |
US7818743B2 (en) | Logging lock data | |
US20130047011A1 (en) | System and Method for Enabling Turbo Mode in a Processor | |
US9552221B1 (en) | Monitoring application execution using probe and profiling modules to collect timing and dependency information | |
CN110231995B (zh) | 一种基于Actor模型的任务调度方法、装置及存储介质 | |
CN111488290B (zh) | 基于智能电表操作系统的线程测试方法和装置 | |
Gulisano et al. | Efficient data streaming multiway aggregation through concurrent algorithmic designs and new abstract data types | |
CN102262559A (zh) | 一种资源共享的方法及系统 | |
CN109213576B (zh) | 程序死锁检测方法、存储介质、设备及系统 | |
CN111813517B (zh) | 任务队列的分配方法、装置、计算机设备及介质 | |
CN116541142A (zh) | 任务调度方法、装置、设备、存储介质及计算机程序产品 | |
CN111858656A (zh) | 一种基于分布式架构的静态数据的查询方法和设备 | |
CN111459622A (zh) | 调度虚拟cpu的方法、装置、计算机设备和存储介质 | |
CN114579323A (zh) | 一种线程处理方法、装置、设备及介质 | |
CN114238516A (zh) | 数据同步方法、系统及计算机可读介质 | |
CN115858499A (zh) | 一种数据库分区处理方法、装置、计算机设备和存储介质 | |
CN115757039A (zh) | 一种程序监控方法、装置、电子设备和存储介质 | |
CN114490780B (zh) | 一种数据流的调度方法、装置、电子设备、介质及产品 | |
CN117742979B (zh) | 一种面向时空数据处理的分布式锁方法及电子设备 | |
CN114428673A (zh) | 并发申请资源状态的方法 | |
CN114153682A (zh) | 嵌入式任务的状态检测方法、设备、系统及存储介质 | |
CN114546651A (zh) | 一种多线程运行的方法、装置、设备及存储介质 | |
CN115454660A (zh) | 一种任务管理方法、装置、电子设备及存储介质 | |
CN112256208A (zh) | 一种离线数据包存储分析方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140430 |