调整时间的方法、装置、电子设备及存储介质制造方法及图纸

技术编号:19903115 阅读:18 留言:0更新日期:2018-12-26 02:49
本发明专利技术实施例提供了一种调整时间的方法、装置、电子设备及存储介质,涉及数据处理技术领域,该方法包括:当程序中的目标线程占用共享资源时,检测所述目标线程对应的占用时间;依据所述占用时间,调整自旋时间,其中,所述自旋时间用于确定申请线程是否需要进入睡眠状态,所述申请线程包括所述程序中申请占用所述共享资源的线程。本发明专利技术实施例可动态地调整自旋时间,从而能够在保证程序正确性的前提下,加快多线程竞争使用共享资源情况下的数据访问速度。

【技术实现步骤摘要】
调整时间的方法、装置、电子设备及存储介质
本专利技术涉及数据处理
,特别是涉及一种调整时间的方法、一种调整时间的装置、一种电子设备以及一种存储介质。
技术介绍
在多线程编程中,数据共享是不可避免的。因此,在多线程进行并行编程的时候,数据共享的一致性成为需要考虑的首要问题。例如,为了在多线程数据访问的过程中保证数据的一致性和安全性,JAVA语言提供了同步的(synchronized)关键字来实现同步,即可使用该关键字来锁定某个对象的临界区。具体的,Java虚拟机(JavaVirtualMachine,JVM)使用锁机制来保证不同线程对于该关键字标识出来的临界区的互斥访问,即任何线程必须先获取锁了之后才能访问该临界区,访问完成退出该临界区的时候必须释放锁,以便其他线程的进入。当存在一系列线程A[1]~A[n]使用了某一个共享数据模块(简称数据块),在某一线程占用该数据块的时候,其它线程都必须进入睡眠状态等待被唤醒。如果每次线程占用数据块时间比较短,就会出现频繁的数据切换,消耗大量中央处理器(CentralProcessingUnit,CPU)资源,导致线程有效吞吐率下降。
技术实现思路
鉴于上述问题,提出了本专利技术实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种调整时间的方法。相应的,本专利技术实施例还提供了一种调整时间的装置、一种电子设备以及一种存储介质,用以保证上述方法的实现及应用。为了解决上述问题,本专利技术实施例公开了一种调整时间的方法,包括:当程序中的目标线程占用共享资源时,检测所述目标线程对应的占用时间;依据所述占用时间,调整自旋时间,其中,所述自旋时间用于确定申请线程是否需要进入睡眠状态,所述申请线程包括所述程序中申请占用所述共享资源的线程。可选地,所述依据所述占用时间,调整自旋时间,包括:判断所述占用时间是否超过所述程序对应预设的自旋时间阈值;若超过,则缩短所述程序中的自旋时间;否则,延长所述程序中的自旋时间。可选地,所述判断所述占用时间是否超过所述程序对应预设的自旋时间阈值之前,还包括:统计所述程序中切换线程对应的切换时间;根据所述切换时间,确定所述自旋时间阈值。可选地,所述目标线程占用共享资源之前,还包括:当程序中的线程申请占用共享资源时,判断所述共享资源是否已被占用;在所述共享资源没有被占用时,将所述线程确定为所述程序中的目标线程,所述目标线程用于占用所述共享资源;在所述共享资源已被占用时,检测所述线程是否能够在所述程序当前的自旋时间内占用所述共享资源;当所述线程不能在当前的自旋时间内占用所述共享资源,所述线程进入睡眠状态。可选地,所述当程序中的目标线程占用共享资源时,检测所述线程对应的占用时间,包括:在所述目标线程占用所述共享资源时,记录对应的第一时间;在所述目标线程稀放所述共享资源时,记录对应的第二时间;根据所述第一时间和所述第二时间,确定所述占用时间。本专利技术实施例还公开了一种调整时间的装置,包括:占用时间检测模块,用于当程序中的目标线程占用共享资源时,检测所述目标线程对应的占用时间;自旋时间调整模块,用于依据所述占用时间,调整自旋时间,其中,所述自旋时间用于确定申请线程是否需要进入睡眠状态,所述申请线程包括所述程序中申请占用所述共享资源的线程。可选地,所述自旋时间调整模块,包括:判断子模块,用于判断所述占用时间是否超过所述程序对应的自旋时间阈值;调整子模块,用于若所述占用时间超过所述自旋时间阈值,则缩短所述程序中的自旋时间;否则,延长所述程序中的自旋时间。可选地,调整时间的装置还包括:切换时间统计模块,用于统计所述程序中切换线程对应的切换时间;自旋阈值确定模块,用于根据所述切换时间,确定所述自旋时间阈值。可选地,调整时间的装置还包括:资源占用判断模块,用于当程序中的线程申请占用共享资源时,判断所述共享资源是否已被占用;线程占用资源模块,用于在所述共享资源没有被占用时,将所述线程确定为所述程序中的目标线程,所述目标线程用于占用所述共享资源;线程自旋判断模块,用于在所述共享资源已被占用时,检测所述线程是否能够在所述程序当前的自旋时间内占用所述共享资源;线程睡眠等待模块,用于当所述线程不能在当前的自旋时间内占用所述共享资源,所述线程进入睡眠状态。可选地,所述占用时间检测模块,包括:第一第间记录子模块,用于在所述目标线程占用所述共享资源时,记录对应的第一时间;第二第间记录子模块,用于在所述目标线程稀放所述共享资源时,记录对应的第二时间;占用时间确定子模块,根据所述第一时间和所述第二时间,确定所述占用时间。本专利技术实施例还公开了一种电子设备,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:当程序中的目标线程占用共享资源时,检测所述目标线程对应的占用时间;依据所述占用时间,调整自旋时间,其中,所述自旋时间用于确定申请线程是否需要进入睡眠状态,所述申请线程包括所述程序中申请占用所述共享资源的线程。本专利技术实施例还公开了一种可读存储介质,可选地,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行本专利技术实施例中一个或多个所述的调整时间的方法。本专利技术实施例包括以下优点:通过本专利技术实施例,在程序中的线程占用共享资源时,可以检测该对应的占用时间,并可根据该占用时间,动态地调整自旋时间,从而能够在保证程序正确性的前提下,加快多线程竞争使用共享资源情况下的数据访问速度。附图说明图1是本专利技术的一种调整时间的方法实施例的步骤流程图;图2是本专利技术的一种调整时间的方法优选实施例的步骤流程图;图3是本专利技术一个可选示例中的自旋阈值函数的变化曲线图;图4是本专利技术一个示例中多线程对共享资源进行访问的流程图;图5是本专利技术的一种时间调整装置实施例的结构框图;图6是根据一示例性实施例示出的一种用于调整时间的电子设备的结构框图。具体实施方式为使本专利技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本专利技术作进一步详细的说明。目前,Java虚拟机中存在三种锁的机制,包括:偏向锁、轻量级锁和重量级锁。其中,重量级锁的实现方式可以直接调用操作系统内核的互斥锁来锁住临界区;轻量级锁可以通过原子操作修改对象的同步状态,包括加锁的状态和锁的重入次数;偏向锁可在轻量级锁的基础上进一步优化,可以省略重入过程中的原子操作。当只有一个线程进入临界区,可以使用轻量级锁;当多个线程竞争临界区资源时,可以转入重量级锁。具体而言,在JVM中,当多个线程竞争使用临界资源的时候,临界区加锁的方式可以从轻量级锁转换为重量级锁,底层的实现方式可以是调用操作系统内核的互斥锁,使用进程阻塞的方式进行同步,此处的临界资源可为共享资源。对于互斥锁,如果一个资源Z已经被线程A占用,线程B想申请该资源Z,就无法获取锁,只能进入睡眠状态等待线程A结束并释放锁。当线程A释放锁之后,操作系统可以唤醒线程B并切换到线程B的执行现场,线程B开始执行,并获取资源Z的锁。该过程的问题之一在于,操作系统在唤醒线程B并切换到B的执行现场是一个非常耗时的操作,需要保存当前正在执行的线程C的现场,如保存各个寄存器状态,PC寄存器本文档来自技高网...

【技术保护点】
1.一种调整时间的方法,其特征在于,包括:当程序中的目标线程占用共享资源时,检测所述目标线程对应的占用时间;依据所述占用时间,调整自旋时间,其中,所述自旋时间用于确定申请线程是否需要进入睡眠状态,所述申请线程包括所述程序中申请占用所述共享资源的线程。

【技术特征摘要】
1.一种调整时间的方法,其特征在于,包括:当程序中的目标线程占用共享资源时,检测所述目标线程对应的占用时间;依据所述占用时间,调整自旋时间,其中,所述自旋时间用于确定申请线程是否需要进入睡眠状态,所述申请线程包括所述程序中申请占用所述共享资源的线程。2.根据权利要求1所述的方法,其特征在于,所述依据所述占用时间,调整自旋时间,包括:判断所述占用时间是否超过所述程序对应预设的自旋时间阈值;若超过,则缩短所述程序中的自旋时间;否则,延长所述程序中的自旋时间。3.根据权利要求2所述的方法,其特征在于,所述判断所述占用时间是否超过所述程序对应预设的自旋时间阈值之前,还包括:统计所述程序中切换线程对应的切换时间;根据所述切换时间,确定所述自旋时间阈值。4.根据权利要求1至3任一所述的方法,其特征在于,所述目标线程占用共享资源之前,还包括:当程序中的线程申请占用共享资源时,判断所述共享资源是否已被占用;在所述共享资源没有被占用时,将所述线程确定为所述程序中的目标线程,所述目标线程用于占用所述共享资源;在所述共享资源已被占用时,检测所述线程是否能够在所述程序当前的自旋时间内占用所述共享资源;当所述线程不能在当前的自旋时间内占用所述共享资源,所述线程进入睡眠状态。5.根据权利要求1至3任一所述的方法,其特征在于,所述当程序中的目标线程占用共享资源时,检测所述目标线程对应的占用时间,包括:在所述目标线程占用所述共享资源时,记录对应的第一时间;在所述目标线程稀放所述共享资源时,记录对应的第二时间;根据所述第一时间和所述第二时间,确定所述占用时间。6.一种调整时间的装置,其特征在于,包括:占用时间检测模块,用于当程序中的目标线程占用共享资源时,检测所述目标线程对应的占用时间;自旋时间调整模块,用于依据所述占用时间,调整自旋时间,其中,所述自旋时间用于确定申请线程是否需要进入睡眠状态,所述申请线程包括所述程序中申请占用所述共享资源的线程。7.根据权利要求6所述的装置,其特征在于,所述自旋时间调整模块,...

【专利技术属性】
技术研发人员:姜韶峰敖琪
申请(专利权)人:龙芯中科技术有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1