CN113742091A - 一种线程运行方法、装置、计算机设备和存储介质 - Google Patents
一种线程运行方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN113742091A CN113742091A CN202111012205.8A CN202111012205A CN113742091A CN 113742091 A CN113742091 A CN 113742091A CN 202111012205 A CN202111012205 A CN 202111012205A CN 113742091 A CN113742091 A CN 113742091A
- Authority
- CN
- China
- Prior art keywords
- thread
- lock
- holding
- target
- waiting
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000013507 mapping Methods 0.000 claims abstract description 90
- 230000015556 catabolic process Effects 0.000 claims description 6
- 238000006731 degradation reaction Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 6
- 230000006870 function Effects 0.000 description 8
- 238000004590 computer program Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 238000007493 shaping process Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000007787 solid Substances 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种线程运行方法、装置、计算机设备和存储介质,由于建立的目标映射表包括等待线程、锁以及持有线程之间的对应关系。因此,当检测到第一等待线程需等待第一目标锁时,可以基于该目标映射表,确定持有第一目标锁的第一持有线程,以及第一持有线程等待的第二目标锁。并从目标映射表中查找持有第二目标锁的第二持有线程。然后再先运行第二持有线程,并在释放第二目标锁后,运行第一持有线程。由于可以先运行第二持有线程并在释放第二目标锁后,运行第一持有线程。因此,第一等待线程可以较快地获取到第一目标锁,从而使得可以减少第一等待线程等待第一目标锁的时间。
Description
技术领域
本发明涉及计算机领域,具体涉及一种线程运行方法、装置、计算机设备和存储介质。
背景技术
随着科学技术的发展,人们对计算机的运行效率要求越来越高。为了提高计算机的运行效率,一般会并行地运行多个线程。当并行地运行多个线程时,会出现多个线程同时访问同一资源的现象。当多个线程同时访问同一资源时,由于资源不同步,从而使得在访问时会出现错误。
为了解决该技术问题,引入了锁机制,即只有获取到资源对应的锁之后该线程才能执行。但是,在获取锁的过程中,如果该锁已经被其他线程持有,则该线程需要等待至该持有线程运行完成释放该锁后才能获取到该锁。
目前,在等待锁的过程中,该线程可以确定锁的持有线程,从而可以优先运行该锁的持有线程,进而减少等待时间。然而,如果该锁的持有线程同时也在等待其他锁,则该线程无法获取到其他锁的持有线程,从而无法优先运行其他锁的持有线程,进而无法减少该线程的等待时间。
发明内容
本申请实施例提供一种线程运行方法、装置、计算机设备和存储介质,可以解决目前无法减少线程的等待时间的问题。
本申请实施例提供了一种线程运行方法,包括:
建立目标映射表,上述目标映射表包括等待线程、锁以及持有线程之间的对应关系;
当检测到第一等待线程需等待第一目标锁时,基于上述目标映射表,确定与上述第一目标锁对应的第一持有线程,以及上述第一持有线程等待的第二目标锁;
从上述目标映射表中查找与上述第二目标锁对应的第二持有线程;
运行上述第二持有线程,并在释放上述第二目标锁后,运行上述第一持有线程。
基于本申请提供的一个方面,还提供一种线程运行装置,包括:
建立模块,用于建立目标映射表,上述目标映射表包括等待线程、锁以及持有线程之间的对应关系;
确定模块,用于当检测到第一等待线程需等待第一目标锁时,基于上述目标映射表,确定与上述第一目标锁对应的第一持有线程,以及上述第一持有线程等待的第二目标锁;
查找模块,用于从上述目标映射表中查找与上述第二目标锁对应的第二持有线程;
运行模块,用于运行上述第二持有线程,并在释放上述第二目标锁后,运行上述第一持有线程。
根据本申请的一个方面,还提供了一种存储介质,其上存储有计算机程序,其中,上述计算机程序被处理器执行时实现如上述方法的步骤。
根据本申请提供的一个方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器并可在处理器上运行的计算机程序,其中,上述处理器执行上述计算机程序时实现如上述方法的步骤。
在本申请实施例中,由于建立的目标映射表包括等待线程、锁以及持有线程之间的对应关系。因此,当检测到第一等待线程需等待第一目标锁时,可以基于该目标映射表,确定与第一目标锁对应的第一持有线程,以及第一持有线程等待的第二目标锁。并从目标映射表中查找与第二目标锁对应的第二持有线程。即在本实施例中,可以通过目标映射表确定第二持有线程。
因为可以确定第二持有线程。所以,可以先运行第二持有线程,并在释放第二目标锁后,运行第一持有线程。由于可以先运行第二持有线程并在释放第二目标锁后,运行第一持有线程。因此,第一等待线程可以较快地获取到第一目标锁,从而使得可以减少第一等待线程等待第一目标锁的时间。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的线程运行方法的流程示意图;
图2是本申请实施例提供的线程运行装置的结构体示意图;
图3是本申请实施例提供的计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请实施例提供的线程运行方法可以适用于计算机设备中,计算机设备可以为手机、平板电脑、笔记本电脑、台式电脑以及穿戴设备等,本申请对计算机设备的具体类型不做具体限定。
为了说明本申请的技术方案,下面通过具体实施例来进行说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
目前,在并行地运行多线程的过程中,为了防止访问出现错误,线程只有获取到对应的锁之后才能执行。然而,如果一个线程在等待锁时,该锁的持有线程也在等待其他锁,则该线程无法获取到其他锁的持有线程,从而无法优先运行其他锁的持有线程,进而无法减少该线程的等待时间。
比如,计算机设备启动应用程序A时需要访问资源1,启动应用程序B时需要访问资源1和资源2,启动应用程序C时需要访问资源2,资源1对应的锁为锁a,资源2对应的锁为锁b,启动应用程序A的过程对应线程1,启动应用程序B的过程对应线程2,启动应用程序C的过程对应线程3。
当计算机设备需启动应用程序A时,即需要运行线程1时,锁a被线程2所持有,并且,此时线程2在等待锁b,而锁b被线程3所持有,则线程1需等待线程2和线程3运行完成时才能获取到锁a。
但是,目前线程1只能确定锁a的持有者线程2,并不能确定线程1等待的锁b以及锁b的持有者线程3。由于不能确定锁b以及锁b的持有者线程3,从而使得无法优先运行线程3,进而使得无法减少线程1等待锁a的时间。
为了解决该技术问题,本申请实施例提供了一种线程运行方法,在该方法中,由于建立的目标映射表包括等待线程、锁以及持有线程之间的对应关系。因此,当检测到第一等待线程(此处的第一等待线程可以上述的线程1)需等待第一目标锁(此处的第二目标锁可以上述的锁a)时,可以基于该目标映射表,确定与第一目标锁对应的第一持有线程(此处的第一持有线程可以上述的线程2),以及第一持有线程等待的第二目标锁(此处的第二目标锁可以上述的锁b)。并从目标映射表中查找与第二目标锁对应的第二持有线程(此处的第二持有线程可以上述的线程3)。
即在本实施例中,可以通过目标映射表确定第二持有线程。因为可以确定第二持有线程。所以,可以先运行第二持有线程,并在释放第二目标锁后,运行第一持有线程。由于可以先运行第二持有线程并在释放第二目标锁后,运行第一持有线程。因此,第一等待线程可以较快地获取到第一目标锁,从而使得可以减少第一等待线程等待第一目标锁的时间。
应理解,上述只是本申请的一个示例。在实际应用中,对于并行地运行多线程的场景,本申请的技术方案均可适用。
下面参照图1,对本申请实施例提供的一种线程运行方法进行详细描述,该方法可以由计算机设备的处理器执行,该方法包括:
步骤S101、建立目标映射表,目标映射表包括等待线程,锁以及持有线程之间的对应关系。
其中,锁是一种权限,线程只有获取到锁之后才能访问该锁对应的资源。对于锁的类型用户可以根据实际情况进行设置,比如,本申请实施例中的锁可以为读写锁、互斥锁、条件锁以及自旋锁等。本申请在此不做具体限定。
需要说明的是,当该锁为读写锁时,目标映射表可以为链表。因为当读写锁为读锁时,可以至少两个以上的线程同时进行读锁。所以当锁为读写锁时,该目标映射表可以为链表。链表指一种在物理存储单元上非连续、非顺序的存储结构。
上述资源可以为代码,或者,也可以为中央处理器(Central Processing Unit,CPU)的占用率。对于资源的具体类型,用户可根据实际情况进行设置,本申请在此不做限定。
等待线程为正在等待锁的线程。持有线程为当前时刻持有锁的线程。需要说明的是,该等待线程也可以同时为持有线程,该持有线程也可以同时为等待线程。
比如,等待线程1在等待锁a,但由于等待线程1也可以同时持有锁b,因此,此时,该等待线程1也为持有线程。持有线程1持有锁a,但也可以同时在等待锁c,则此时该持有线程1也可以为等待线程。
建立目标映射表的过程可以为:计算机设备在检测到线程在等待锁时,即检测到存在等待线程时,并把等待线程以及等待线程等待的锁关联存储至目标映射表中;在检测到线程持有锁时,即检测到存在持有线程时,将持有线程和持有线程持有的锁关联存储至目标映射表中。
即在本实施例中,将等待线程、锁以及持有线程的对应关系存储至目标映射表,从而使得可以通过该目标映射表确定等待线程等待的锁的持有线程。
比如,计算机设备当检测到持有线程1持有锁1时,将持有线程1和锁1关联存储至目标映射表中。当检测到等待线程1持有锁2时,将等待线程1和锁2关联存储至目标映射表中。当检测到等待线程1在等待锁1时,将等待线程1和锁1关联存储至目标映射表中。
然后,当计算机设备检测到等待线程2在等待锁2时,可以通过目标映射表确定锁2的持有者等待线程1和等待线程1等待的锁1,并通过目标映射表确定锁1的持有者持有线程1。
对于等待线程、锁以及持有线程存储在目标映射表中的方式,用户可以根据实际情况进行设置。比如,在本申请实施例中,将等待线程、锁以及持有线程以结构体的形式存储在目标映射表中。本申请实施例在此不做限定。
结构体是由一批数据组合而成的一种新的数据类型,该批数据的类型可以不相同但该批数据又存在联系。比如,一个结构体由学号字符串、姓名字符串和年龄整形变量组成。上述整形变量为数据类型中的一种。
步骤S102、当检测到第一等待线程需等待第一目标锁时,基于目标映射表,确定与第一目标锁对应的第一持有线程,以及第一持有线程等待的第二目标锁。
由于目标映射表包括了等待线程、锁以及持有线程之间的对应关系。因此,计算机设备在检测到第一等待线程需等待第一目标锁时,可以通过该目标映射表确定持有第一目标锁的第一持有线程,以及第一持有线程等待的第二目标锁。
应理解,计算机设备在检测到第一等待线程需等待第一目标锁时,还需将第一等待线程与第一目标锁关联存储至目标映射表中,以便可以从目标映射表中查找第一等待线程等待的第一目标锁。
步骤S103、从目标映射表中查找与第二目标锁对应的第二持有线程。
由于目标映射表包括了等待线程、锁以及持有线程之间的对应关系。因此,计算机设备在检测到第一等待线程需等待第一目标锁时,不但可以通过该目标映射表确定持有第一目标锁的第一持有线程,以及第一持有线程等待的第二目标锁。还可以通过目标映射表中查找持有第二目标锁的第二持有线程。
需要说明的是,计算机设备在查找到的持有线程不是等待线程时停止查找。因此,此处的第二持有线程不是等待线程。因此,从目标映射表中查找与第二目标锁对应的第二持有线程,包括:
从目标映射表中查找与第二目标锁对应的候选持有线程;若候选持有线程为等待线程,则继续从目标映射表查找,直至查找到的候选持有线程不是等待线程时,将候选持有线程作为第二持有线程。
步骤S104、运行第二持有线程,并在释放第二目标锁后,运行第一持有线程。
因为计算机设备可以从目标映射表查找到第一持有线程以及第二持有线程。所以,计算机设备可以直接先运行第二持有线程,并在运行完成第二持有线程释放第二目标锁后,运行第一持有线程,在运行完成第一持有线程后释放第一目标锁。
由于可以先运行第二持有线程和第一持有线程,因此,第一等待线程可以尽快地获取到第一目标锁,从而减少第一等待线程等待第一目标锁的时间。
在一些可能实现的方式中,由于存在一些优先级不可以降低的普通线程的情况。因此,运行第二持有线程,并在释放第二目标锁后,运行第一持有线程的详细过程可以为:
先获取原始优先级表,原始优先级表包括持有线程以及普通线程的优先级,普通线程为在原始优先级表中优先级高于持有线程的线程。
然后,确定原始优先级表中满足预设降级条件的普通线程,并设置第一持有线程和第二持有线程的优先级高于满足降级条件的普通线程的优先级,得到更新优先级表。
最后再根据更新优先级表运行第二持有线程,并在释放第二目标锁后,运行第一持有线程。
应理解的是,当从目标映射表中查找到的与第二目标锁对应的候选持有线程为等待线程时,则在运行完成第二持有线程释放锁之后,依次运行候选持有线程,并在运行完成持有第二目标锁的候选持有线程后运行第一持有线程。
在运行完成第一持有线程后释放第一目标锁后,第一等待线程可以获取到第一目标锁。当第一等待线程获取到第一目标锁之后,将第一等待线程作为新的第一持有线程,并将新的第一持有线程和第一目标锁关联存储至目标映射表中。
由上可见,在本申请实施例中,由于建立的目标映射表包括等待线程、锁以及持有线程之间的对应关系。因此,当检测到第一等待线程需等待第一目标锁时,可以基于该目标映射表,确定与第一目标锁对应的第一持有线程,以及第一持有线程等待的第二目标锁。并从目标映射表中查找与第二目标锁对应的第二持有线程。即在本实施例中,可以通过目标映射表确定第二持有线程。
因为可以确定第二持有线程。所以,可以先运行第二持有线程,并在释放第二目标锁后,运行第一持有线程。由于可以先运行第二持有线程并在释放第二目标锁后,运行第一持有线程。因此,第一等待线程可以较快地获取到第一目标锁,从而使得可以减少第一等待线程等待第一目标锁的时间。
应理解的是,上述实施例中各步骤的序号并不意味着执行顺序的先后,各步骤的执行顺序由其功能和内在逻辑确定。
为了更好地实施以上方法,相应地,本发明实施例还提供一种线程运行装置,该线程运行装置具体集成在计算机设备中。
参照图2,该线程运行装置包括:
建立模块201,用于建立目标映射表,目标映射表包括等待线程、锁以及持有线程之间的对应关系。
确定模块202,用于当检测到第一等待线程需等待第一目标锁时,基于目标映射表,确定与第一目标锁对应的第一持有线程,以及第一持有线程等待的第二目标锁。
查找模块203,用于从目标映射表中查找与第二目标锁对应的第二持有线程。
运行模块204,用于运行第二持有线程,并在释放第二目标锁后,运行第一持有线程。
可选地,该线程运行装置还包括:
第一存储模块,用于当检测到第一等待线程需等待第一目标锁时,将第一等待线程以及第一目标锁关联存储至所述目标映射表中。
可选地,该线程运行装置还包括:
第二存储模块,用于当第一等待线程获取到第一目标锁时,将第一等待线程作为新的第一持有线程,并将新的第一持有线程和第一目标锁关联存储至目标映射表中。
可选地,等待线程、锁以及持有线程以结构体的形式存储在目标映射表中。
可选地,当锁包括读写锁时,目标映射表为链表。
可选地,查找模块203具体用于执行:
从目标映射表中查找与第二目标锁对应的候选持有线程;
若候选持有线程为等待线程,则继续从目标映射表查找,直至查找到的候选持有线程不是等待线程时,将候选持有线程作为第二持有线程。
可选地,运行模块204具体用于执行:
获取原始优先级表,原始优先级表包括持有线程以及普通线程的优先级,普通线程为在原始优先级表中优先级高于持有线程的线程;
确定原始优先级表中满足预设降级条件的普通线程,并设置第一持有线程和第二持有线程的优先级高于满足降级条件的普通线程的优先级,得到更新优先级表;
根据更新优先级表运行第二持有线程,并在释放第二目标锁后,运行第一持有线程。
采用本实施例中的线程运行装置,由于建立模块201建立的目标映射表包括等待线程、锁以及持有线程之间的对应关系。因此,确定模块202当检测到第一等待线程需等待第一目标锁时,可以基于该目标映射表,确定与第一目标锁对应的第一持有线程,以及第一持有线程等待的第二目标锁。查找模块203可以从目标映射表中查找与第二目标锁对应的第二持有线程。即在本实施例中,可以通过目标映射表确定第二持有线程。
因为可以确定第二持有线程。所以,运行模块204可以先运行第二持有线程,并在释放第二目标锁后,运行第一持有线程。由于可以先运行第二持有线程并在释放第二目标锁后,运行第一持有线程。因此,第一等待线程可以较快地获取到第一目标锁,从而使得可以减少第一等待线程等待第一目标锁的时间。
需要说明的是,上述装置中的信息交互、执行过程等内容,由于基于与方法实施例的同一构思,因此,其具体执行过程可以参照方法实施例,本申请在此不再赘述。
此外,本申请实施例还提供一种计算机设备,如图3所示,其示出了本申请实施例所涉及的计算机设备的结构示意图,具体来讲:
该计算机设备可以包括一个或者一个以上处理核心的处理器301、一个或一个以上计算机可读存储介质的存储器302、电源303和输入单元304等部件。本领域技术人员可以理解,图3中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器301是该计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器302内的软件程序和/或模块,以及调用存储在存储器302内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。可选的,处理器301可包括一个或多个处理核心;优选的,处理器301可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器301中。
存储器302可用于存储软件程序以及模块,处理器301通过运行存储在存储器302的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器302可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器302可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器302还可以包括存储器控制器,以提供处理器301对存储器302的访问。
计算机设备还包括给各个部件供电的电源303,优选的,电源303可以通过电源管理系统与处理器301逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源303还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该计算机设备还可包括输入单元304,该输入单元304可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,计算机设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,计算机设备中的处理器301会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器302中,并由处理器301来运行存储在存储器302中的应用程序,从而实现各种功能,比如:
建立目标映射表,目标映射表包括等待线程、锁以及持有线程之间的对应关系;
当检测到第一等待线程需等待第一目标锁时,基于目标映射表,确定与第一目标锁对应的第一持有线程,以及第一持有线程等待的第二目标锁;
从目标映射表中查找与第二目标锁对应的第二持有线程;
运行第二持有线程,并在释放第二目标锁后,运行第一持有线程。
根据本申请的一个方面,还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中的各种可选实现方式中提供的方法。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请实施例所提供的任一种线程运行方法中的步骤。例如,该指令可以执行如下步骤:
建立目标映射表,目标映射表包括等待线程、锁以及持有线程之间的对应关系;
当检测到第一等待线程需等待第一目标锁时,基于目标映射表,确定与第一目标锁对应的第一持有线程,以及第一持有线程等待的第二目标锁;
从目标映射表中查找与第二目标锁对应的第二持有线程;
运行第二持有线程,并在释放第二目标锁后,运行第一持有线程。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本申请实施例所提供的任一种线程运行方法中的步骤,因此,可以实现本申请实施例所提供的任一种线程运行方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本申请实施例所提供的一种线程运行方法、装置、计算机设备和存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种线程运行方法,其特征在于,包括:
建立目标映射表,所述目标映射表包括等待线程、锁以及持有线程之间的对应关系;
当检测到第一等待线程需等待第一目标锁时,基于所述目标映射表,确定与所述第一目标锁对应的第一持有线程,以及所述第一持有线程等待的第二目标锁;
从所述目标映射表中查找与所述第二目标锁对应的第二持有线程;
运行所述第二持有线程,并在释放所述第二目标锁后,运行所述第一持有线程。
2.如权利要求1所述的线程运行方法,其特征在于,在所述当检测到第一等待线程需等待第一目标锁时,所述方法还包括:
将所述第一等待线程以及所述第一目标锁关联存储至所述目标映射表中。
3.如权利要求1所述的线程运行方法,其特征在于,在所述运行所述第二持有线程,并在释放所述第二目标锁后,运行所述第一持有线程之后,还包括:
当所述第一等待线程获取到所述第一目标锁时,将所述第一等待线程作为新的第一持有线程,并将所述新的第一持有线程和所述第一目标锁关联存储至所述目标映射表中。
4.如权利要求1所述的线程运行方法,其特征在于,将所述等待线程、所述锁以及所述持有线程以结构体的形式存储在所述目标映射表中。
5.如权利要求1所述的线程运行方法,其特征在于,当所述锁包括读写锁时,所述目标映射表为链表。
6.如权利要求1所述的线程运行方法,其特征在于,所述从所述目标映射表中查找与所述第二目标锁对应的第二持有线程,包括:
从所述目标映射表中查找与所述第二目标锁对应的候选持有线程;
若所述候选持有线程为等待线程,则继续从所述目标映射表查找,直至查找到的候选持有线程不是等待线程时,将所述候选持有线程作为第二持有线程。
7.如权利要求1-6任一项所述的线程运行方法,其特征在于,所述运行所述第二持有线程,并在释放所述第二目标锁后,运行所述第一持有线程,包括:
获取原始优先级表,所述原始优先级表包括所述持有线程以及普通线程的优先级,所述普通线程为在所述原始优先级表中优先级高于所述持有线程的线程;
确定所述原始优先级表中满足预设降级条件的普通线程,并设置所述第一持有线程和所述第二持有线程的优先级高于所述满足降级条件的普通线程的优先级,得到更新优先级表;
根据所述更新优先级表运行所述第二持有线程,并在释放所述第二目标锁后,运行所述第一持有线程。
8.一种线程运行装置,其特征在于,包括:
建立模块,用于建立目标映射表,所述目标映射表包括等待线程、锁以及持有线程之间的对应关系;
确定模块,用于当检测到第一等待线程需等待第一目标锁时,基于所述目标映射表,确定与所述第一目标锁对应的第一持有线程,以及所述第一持有线程等待的第二目标锁;
查找模块,用于从所述目标映射表中查找与所述第二目标锁对应的第二持有线程;
运行模块,用于运行所述第二持有线程,并在释放所述第二目标锁后,运行所述第一持有线程。
9.一种计算机设备,其特征在于,包括存储器和处理器;所述存储器存储有应用程序,所述处理器用于运行所述存储器内的应用程序,以执行权利要求1至7任一项所述的线程运行方法中的步骤。
10.一种存储介质,其特征在于,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至7任一项所述的线程运行方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111012205.8A CN113742091B (zh) | 2021-08-31 | 2021-08-31 | 一种线程运行方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111012205.8A CN113742091B (zh) | 2021-08-31 | 2021-08-31 | 一种线程运行方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113742091A true CN113742091A (zh) | 2021-12-03 |
CN113742091B CN113742091B (zh) | 2024-09-17 |
Family
ID=78734245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111012205.8A Active CN113742091B (zh) | 2021-08-31 | 2021-08-31 | 一种线程运行方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113742091B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6598068B1 (en) * | 1996-01-04 | 2003-07-22 | Sun Microsystems, Inc. | Method and apparatus for automatically managing concurrent access to a shared resource in a multi-threaded programming environment |
US20100138836A1 (en) * | 2008-12-03 | 2010-06-03 | David Dice | System and Method for Reducing Serialization in Transactional Memory Using Gang Release of Blocked Threads |
US20100269115A1 (en) * | 2009-04-16 | 2010-10-21 | International Business Machines Corporation | Managing Threads in a Wake-and-Go Engine |
WO2010139260A1 (zh) * | 2009-06-04 | 2010-12-09 | 中兴通讯股份有限公司 | 数据库事务锁机制的死锁检测方法及装置 |
CN103140831A (zh) * | 2010-03-15 | 2013-06-05 | 高通股份有限公司 | 在处理器处执行线程的系统和方法 |
CN105339897A (zh) * | 2013-05-31 | 2016-02-17 | 微软技术许可有限责任公司 | 高效的优先级感知线程调度 |
CN107133092A (zh) * | 2017-05-24 | 2017-09-05 | 努比亚技术有限公司 | 多线程同步处理方法、终端及计算机可读存储介质 |
CN111767138A (zh) * | 2020-06-09 | 2020-10-13 | Oppo广东移动通信有限公司 | 资源分配方法、存储介质和电子设备 |
-
2021
- 2021-08-31 CN CN202111012205.8A patent/CN113742091B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6598068B1 (en) * | 1996-01-04 | 2003-07-22 | Sun Microsystems, Inc. | Method and apparatus for automatically managing concurrent access to a shared resource in a multi-threaded programming environment |
US20100138836A1 (en) * | 2008-12-03 | 2010-06-03 | David Dice | System and Method for Reducing Serialization in Transactional Memory Using Gang Release of Blocked Threads |
US20100269115A1 (en) * | 2009-04-16 | 2010-10-21 | International Business Machines Corporation | Managing Threads in a Wake-and-Go Engine |
WO2010139260A1 (zh) * | 2009-06-04 | 2010-12-09 | 中兴通讯股份有限公司 | 数据库事务锁机制的死锁检测方法及装置 |
CN103140831A (zh) * | 2010-03-15 | 2013-06-05 | 高通股份有限公司 | 在处理器处执行线程的系统和方法 |
CN105339897A (zh) * | 2013-05-31 | 2016-02-17 | 微软技术许可有限责任公司 | 高效的优先级感知线程调度 |
CN107133092A (zh) * | 2017-05-24 | 2017-09-05 | 努比亚技术有限公司 | 多线程同步处理方法、终端及计算机可读存储介质 |
CN111767138A (zh) * | 2020-06-09 | 2020-10-13 | Oppo广东移动通信有限公司 | 资源分配方法、存储介质和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113742091B (zh) | 2024-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109271258B (zh) | 读写锁重入的实现方法、装置、终端及存储介质 | |
JP6491326B2 (ja) | アプリケーションプログラムを実行するための方法および装置 | |
US8607239B2 (en) | Lock mechanism to reduce waiting of threads to access a shared resource by selectively granting access to a thread before an enqueued highest priority thread | |
US8880488B1 (en) | Efficient extent-based B-tree insertion | |
CN110865888A (zh) | 一种资源加载方法、装置、服务器及存储介质 | |
JP2018534676A (ja) | 競合の存在下での効率的なタスクスケジューリングのための方法 | |
US9086911B2 (en) | Multiprocessing transaction recovery manager | |
US9043806B2 (en) | Information processing device and task switching method | |
US10579417B2 (en) | Boosting user thread priorities to resolve priority inversions | |
US8285978B2 (en) | Storage medium storing master boot record, computer system having the same and booting method of the computer system | |
EP3824397B1 (en) | Version-based table locking | |
US20150193268A1 (en) | File lock and unlock mechanism | |
US20200371882A1 (en) | Method, Apparatus, Device and Medium for Starting Virtual Machine | |
US20210240547A1 (en) | Method, apparatus, and electronic device for improving cpu performance | |
CN114327642A (zh) | 一种数据读写的控制方法及电子设备 | |
CN117112522A (zh) | 并发进程日志管理方法、装置、设备和存储介质 | |
CN116680080A (zh) | 一种内存管理方法、装置、电子设备和存储介质 | |
US20130042248A1 (en) | System and method for supporting parallel threads in a multiprocessor environment | |
CN113742091B (zh) | 一种线程运行方法、装置、计算机设备和存储介质 | |
US10169274B1 (en) | System and method for changing a slave identification of integrated circuits over a shared bus | |
CN113254464B (zh) | 一种数据加载方法和装置 | |
CN114791854A (zh) | 用户态虚拟机任务的调度方法、装置、设备及存储介质 | |
US20100250507A1 (en) | Enumeration of a concurrent data structure | |
US9086895B1 (en) | Controlling hardware driver selection | |
CN113760465A (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 |