CN105677487B - 一种控制资源占用的方法及装置 - Google Patents

一种控制资源占用的方法及装置 Download PDF

Info

Publication number
CN105677487B
CN105677487B CN201610017583.8A CN201610017583A CN105677487B CN 105677487 B CN105677487 B CN 105677487B CN 201610017583 A CN201610017583 A CN 201610017583A CN 105677487 B CN105677487 B CN 105677487B
Authority
CN
China
Prior art keywords
queue
thread
reading
deposit
linear program
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
CN201610017583.8A
Other languages
English (en)
Other versions
CN105677487A (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.)
Inspur General Software Co Ltd
Original Assignee
Inspur General Software 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 Inspur General Software Co Ltd filed Critical Inspur General Software Co Ltd
Priority to CN201610017583.8A priority Critical patent/CN105677487B/zh
Publication of CN105677487A publication Critical patent/CN105677487A/zh
Application granted granted Critical
Publication of CN105677487B publication Critical patent/CN105677487B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Abstract

本发明提供了一种控制资源占用的方法及装置,该方法,包括:预先根据队列的存入线程的存入数据的速度和读取线程的读取数据的速度,确定所述队列的大小,其中,所述队列的存入线程用于向所述队列存入数据,所述队列的读取线程用于从所述队列中读取数据;根据确定出的所述队列的大小,创建所述队列;预先设置相关线程的挂起条件,所述相关线程包括:所述存入线程、所述读取线程;还包括:实时检测所述队列中的当前数据量;获取所述队列中的当前数据量;根据获取的所述队列中的当前数据量,判断所述相关线程是否满足所述挂起条件,如果是,则挂起所述相关线程。本发明提供了一种控制资源占用的方法及装置,能够提高资源利用率。

Description

一种控制资源占用的方法及装置
技术领域
本发明涉及计算机技术领域,特别涉及一种控制资源占用的方法及装置。
背景技术
伴随着科学技术的发展,各行各业信息化的程度越来越高,每天产生了大量的数据,对数据的处理也就越来越重要,数据慢慢驱动了整个的业务流程。为了充分利用这些数据,需要对这些数据进行数据库间相互传输、数据转换等处理。
在处理数据的过程中,随着数据量的增加,处理数据的设备的负荷也越来越重。在处理大量数据时,会占用大量的资源。
现有技术中,还没有一种控制资源占用的方法,使得现有的数据处理方法的资源利用率较低。
发明内容
本发明实施例提供了一种控制资源占用的方法及装置,能够提高资源利用率。
一方面,本发明提供了一种控制资源占用的方法,包括:
预先根据队列的存入线程的存入数据的速度和读取线程的读取数据的速度,确定所述队列的大小,其中,所述队列的存入线程用于向所述队列存入数据,所述队列的读取线程用于从所述队列中读取数据;
根据确定出的所述队列的大小,创建所述队列;
预先设置相关线程的挂起条件,所述相关线程包括:所述存入线程、所述读取线程;
还包括:
S1:实时检测所述队列中的当前数据量;
S2:获取所述队列中的当前数据量;
S3:根据获取的所述队列中的当前数据量,判断所述相关线程是否满足所述挂起条件,如果是,则挂起所述相关线程。
进一步地,所述读取线程的挂起条件,包括:所述队列中的当前数据量小于等于所述队列的大小的第一预设比例;
所述S3,包括:
判断所述队列中的当前数据量是否小于等于所述队列的大小的第一预设比例,如果是,则挂起所述队列的所述读取线程。
进一步地,在判断出所述队列中的当前数据量小于等于所述队列的大小的第一预设比例时,在执行所述挂起所述队列的所述读取线程之前,还包括:
判断所述队列的所述存入线程是否停止向所述队列存入数据,如果是,则执行步骤S2,否则,执行所述挂起所述队列的所述存入线程。
进一步地,该方法还包括:
预先设置所述相关线程的挂起时间阈值;
还包括:判断挂起的所述相关线程的挂起时间长度是否大于等于所述挂起时间阈值,如果是,则唤醒所述相关线程。
进一步地,所述存入线程的挂起条件,包括:所述队列中的当前数据量大于等于所述队列的大小的第二预设比例;
所述S3,包括:判断所述队列中的当前数据量是否大于等于所述队列的大小的第二预设比例,如果是,则挂起所述队列的所述存入线程。
进一步地,该方法还包括:判断所述队列的所述读取线程是否停止从所述队列中读取数据,如果是,则挂起所述队列的所述存入线程。
进一步地,所述S3,还包括:当判断出所述相关线程不满足所述挂起条件时,则判断所述相关线程是否挂起,如果是,则唤醒挂起的所述相关线程。
另一方面,本发明提供了一种控制资源占用的装置,包括:
确定单元,用于根据队列的存入线程的存入数据的速度和读取线程的读取数据的速度,确定所述队列的大小,其中,所述队列的存入线程用于向所述队列存入数据,所述队列的读取线程用于从所述队列中读取数据;
创建单元,用于根据确定出的所述队列的大小,创建所述队列;
第一设置单元,用于设置相关线程的挂起条件,所述相关线程包括:所述存入线程、所述读取线程;
还包括:
检测单元,用于实时检测所述队列中的当前数据量;
获取单元,用于获取所述队列中的当前数据量;
挂起单元,用于根据所述获取单元获取的所述队列中的当前数据量,判断所述相关线程是否满足所述挂起条件,如果是,则挂起所述相关线程。
进一步地,所述读取线程的挂起条件,包括:所述队列中的当前数据量小于等于所述队列的大小的第一预设比例;
所述挂起单元,用于判断所述队列中的当前数据量是否小于等于所述队列的大小的第一预设比例,如果是,则挂起所述队列的所述读取线程。
进一步地,所述挂起单元,在判断出所述队列中的当前数据量小于等于所述队列的大小的第一预设比例时,在执行所述挂起所述队列的所述读取线程之前,还用于:
判断所述队列的所述存入线程是否停止向所述队列存入数据,如果是,则触发所述获取单元,否则,执行所述挂起所述队列的所述存入线程。
进一步地,该装置还包括:
第二设置单元,用于设置所述相关线程的挂起时间阈值;
第一唤醒单元,用于判断挂起的所述相关线程的挂起时间长度是否大于等于所述挂起时间阈值,如果是,则唤醒所述相关线程。
进一步地,所述存入线程的挂起条件,包括:所述队列中的当前数据量大于等于所述队列的大小的第二预设比例;
所述挂起单元,用于判断所述队列中的当前数据量是否大于等于所述队列的大小的第二预设比例,如果是,则挂起所述队列的所述存入线程。
进一步地,该装置还包括:
第二唤醒单元,用于判断所述队列的所述读取线程是否停止从所述队列中读取数据,如果是,则挂起所述队列的所述存入线程。
进一步地,所述挂起单元,还用于当判断出所述相关线程不满足所述挂起条件时,则判断所述相关线程是否挂起,如果是,则唤醒挂起的所述相关线程。
本发明实施例提供的一种控制资源占用的方法及装置,根据队列的存入数据的速度和读取数据的速度,确定队列的大小,并创建队列,这样可以合理设置队列的大小,避免队列中存储大量的数据,减少了内存的占用,提高了内存的利用率,实时监测队列中的当前数据量,在队列中的当前数据量满足挂起条件时,将相关线程挂起,减少了CPU的占用,提高了CPU的利用率,总之,本发明提供的方法,提高了资源利用率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的一种控制资源占用的方法的流程图;
图2是本发明一实施例提供的另一种控制资源占用的方法的流程图;
图3是本发明一实施例提供的一种控制资源占用的装置的示意图;
图4是本发明一实施例提供的另一种控制资源占用的装置的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种控制资源占用的方法,该方法可以包括以下步骤:
步骤101:预先根据队列的存入线程的存入数据的速度和读取线程的读取数据的速度,确定所述队列的大小,其中,所述队列的存入线程用于向所述队列存入数据,所述队列的读取线程用于从所述队列中读取数据;
步骤102:根据确定出的所述队列的大小,创建所述队列;
步骤103:预先设置相关线程的挂起条件,所述相关线程包括:所述存入线程、所述读取线程;
步骤104:实时检测所述队列中的当前数据量;
步骤105:获取所述队列中的当前数据量;
步骤106:根据获取的所述队列中的当前数据量,判断所述相关线程是否满足所述挂起条件,如果是,则挂起所述相关线程。
本发明实施例提供的一种控制资源占用的方法,根据队列的存入数据的速度和读取数据的速度,确定队列的大小,并创建队列,这样可以合理设置队列的大小,避免队列中存储大量的数据,减少了内存的占用,提高了内存的利用率,实时监测队列中的当前数据量,在队列中的当前数据量满足挂起条件时,将相关线程挂起,减少了CPU的占用,提高了CPU的利用率,总之,本发明提供的方法,提高了资源利用率。
在一种可能的实现方式中,所述读取线程的挂起条件,包括:所述队列中的当前数据量小于等于所述队列的大小的第一预设比例;
所述步骤106,包括:判断所述队列中的当前数据量是否小于等于所述队列的大小的第一预设比例,如果是,则挂起所述队列的所述读取线程。
在该实现方式中,通过队列中的当前数据量占队列的大小的比例来确定是否挂起队列的读取线程。举例来说,第一预设比例为10%,判断所述队列中的当前数据量是否小于等于所述队列的大小的10%,如果是,则挂起所述队列的所述读取线程。
在一种可能的实现方式中,在判断出所述队列中的当前数据量小于等于所述队列的大小的第一预设比例时,在执行所述挂起所述队列的所述读取线程之前,还包括:
判断所述队列的所述存入线程是否停止向所述队列存入数据,如果是,则执行所述判断所述队列中的当前数据量是否小于等于所述队列的大小的第一预设比例,否则,执行所述挂起所述队列的所述存入线程。
在该实现方式中,当存入线程停止向队列存入数据时,为了能够继续对队列中剩余的数据进行处理,即使当前数据量小于等于队列的大小的第一预设比例,读取线程也要继续读取队列中的数据。
在一种可能的实现方式中,还包括:
预先设置所述相关线程的挂起时间阈值;
还包括:判断挂起的所述相关线程的挂起时间长度是否大于等于所述挂起时间阈值,如果是,则唤醒所述相关线程。
举例来说,相关线程的挂起时间阈值为10毫秒,当相关线程的挂起时间长度大于等于10毫秒时,唤醒相关线程,使得相关线程继续进行数据处理。
在一种可能的实现方式中,所述步骤106,包括:判断所述队列中的当前数据量是否大于等于所述队列的大小的第二预设比例,如果是,则挂起所述队列的所述存入线程。
在该实现方式中,通过队列中的当前数据量占队列的大小的比例来确定是否挂起队列的存入线程。在当前数据量大于等于队列的大小的第二预设比例时,则认为队列中有过多的数据没有被处理,占用大量内存,因此,需要停止存入数据,挂起存入线程,节省了内存,减少了CPU的占用。
举例来说,第二预设比例为90%,判断所述队列中的当前数据量是否大于等于所述队列的大小的90%,如果是,则挂起所述队列的所述存入线程。
在一种可能的实现方式中,还包括:判断所述队列的所述读取线程是否停止从所述队列中读取数据,如果是,则挂起所述队列的所述存入线程。
当读取线程停止读取数据时,如果存入线程还向队列中存入数据,会在队列中积累大量数据,消耗内存,并且存入线程也会占用CPU。通过该实现方式,在判断出读取线程停止读取数据后,挂起存入线程,节省了内存资源和CPU资源。
在一种可能的实现方式中,所述步骤106,还包括:当判断出所述相关线程不满足所述挂起条件时,则判断所述相关线程是否挂起,如果是,则唤醒挂起的所述相关线程。
在该实现方式中,当相关线程挂起时,且相关线程已不满足挂起条件的情况下,唤醒挂起的相关线程,继续处理数据。
为使本发明的目的、技术方案和优点更加清楚,下面结合附图及具体实施例对本发明作进一步地详细描述。
在本发明实施例中,基于一种数据集成流程来详细本发明实施例提供的一种控制资源占用的方法。在该数据集成流程中有三个步骤和两个队列,三个步骤分别是数据抽取、数据转换、数据更新,两个队列分别是队列A和队列B,该数据集成流程是要实现从数据库中获取数据经过复杂的转换,输入到txt中。
该数据集成流程具体如下:数据抽取步骤从数据库中获取数据,存入到队列A中,数据转换步骤从队列A中读取数据,并对读取的数据进行转换,然后,存入到队列B中,数据更新步骤从队列B中读取数据,输出读取的数据。
从上述描述可见,对于队列A来说,数据抽取步骤的数据抽取线程为存入线程,数据转换步骤的数据转换线程为读取线程;对于队列B来说,数据更新步骤的数据转换线程为存入线程,数据更新步骤的数据更新线程为读取线程。
而对于每个队列来说,控制资源占用的方法是相同的,下面针对队列A来详细说明控制资源占用的方法。
如图2所示,本发明实施例提供了一种控制资源占用的方法,该方法可以包括以下步骤:
步骤201:预先根据数据抽取线程的存入数据的速度和数据转换线程的读取数据的速度,确定队列A的大小。
具体地,在确定队列的大小时,当存入线程的存入数据的速度较快,读取线程的读取数据的速度较慢时,队列中会堆积大量的数据,占用大量的内存,因此,在这种情况下,需要减小队列的大小,减少内存的占用。当存入线程和读取线程有多个时,还要考虑线程的数量来确定队列的大小。内存的大小的具体数值可以通过样本实验的方式来确定。
由于数据转换的速度较慢,数据转换线程的读取数据的速度较慢,数据抽取线程的存入数据的速度较快,因此,需要较小队列的大小,可以设置为10000。
步骤202:预先设置数据转换线程的挂起条件和数据抽取线程的挂起条件,数据转换线程的挂起条件,包括:队列A中的当前数据量小于等于队列A的大小的第一预设比例,数据抽取线程的挂起条件,包括:队列A中的当前数据量大于等于队列A的大小的第二预设比例。
具体地,第一预设比例可以设置为10%,第二预设比例可以设置为90%。
步骤203:根据确定出的队列A的大小,创建队列A。
步骤204:运行数据抽取线程和数据转换线程。
在该方法中,当相关线程挂起时,相关线程停止运行,如果相关线程没有挂起,则相关线程持续正常运行。
步骤205:实时检测队列A中的当前数据量。
步骤206:获取队列A中的当前数据量。
在之后分别进行对存入线程和读取线程的操作:
步骤207a:判断队列A中的当前数据量是否小于等于队列A的大小的第一预设比例,如果是,则执行步骤208a,否则,执行步骤210a。
步骤208a:判断队列A的数据抽取线程是否停止向队列A存入数据,如果是,则返回步骤206,否则,执行步骤209a。
步骤209a:挂起队列A的数据转换线程,返回步骤206。
步骤210a:判断数据转换线程是否挂起,如果是,则执行步骤211a,否则,返回步骤206。
步骤211a:唤醒挂起的数据转换线程,返回步骤206。
步骤207b:判断队列A中的当前数据量是否大于等于队列A的大小的第二预设比例,如果是,则执行步骤209b,否则,执行步骤208b;
步骤208b:判断队列A的数据转换线程是否停止从队列A中读取数据,如果是,则执行步骤209b,否则,执行步骤210b。
步骤209b:挂起队列A的数据抽取线程,返回步骤206。
步骤210b:判断数据抽取线程是否挂起,如果是,则执行步骤211b,否则,返回步骤206。
步骤211b:唤醒挂起的数据抽取线程,返回步骤206。
本发明实施例中通过设置每个队列的大小,控制相关线程的挂起与唤醒,能够灵活的控制系统资源的占用情况,能够提高资源的利用率。
如图3、图4所示,本发明实施例提供了一种控制资源占用的装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。从硬件层面而言,如图3所示,为本发明实施例提供的一种控制资源占用的装置所在设备的一种硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常还可以包括其他硬件,如负责处理报文的转发芯片等等。以软件实现为例,如图4所示,作为一个逻辑意义上的装置,是通过其所在设备的CPU将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。本实施例提供的一种控制资源占用的装置,包括:
确定单元401,用于根据队列的存入线程的存入数据的速度和读取线程的读取数据的速度,确定所述队列的大小,其中,所述队列的存入线程用于向所述队列存入数据,所述队列的读取线程用于从所述队列中读取数据;
创建单元402,用于根据确定出的所述队列的大小,创建所述队列;
第一设置单元403,用于设置相关线程的挂起条件,所述相关线程包括:所述存入线程、所述读取线程;
检测单元404,用于实时检测所述队列中的当前数据量;
获取单元405,用于获取所述队列中的当前数据量;
挂起单元406,用于根据所述获取单元获取的所述队列中的当前数据量,判断所述相关线程是否满足所述挂起条件,如果是,则挂起所述相关线程。
在一种可能的实现方式中,所述读取线程的挂起条件,包括:所述队列中的当前数据量小于等于所述队列的大小的第一预设比例;
所述挂起单元406,用于判断所述队列中的当前数据量是否小于等于所述队列的大小的第一预设比例,如果是,则挂起所述队列的所述读取线程。
在一种可能的实现方式中,所述挂起单元406,在判断出所述队列中的当前数据量小于等于所述队列的大小的第一预设比例时,在执行所述挂起所述队列的所述读取线程之前,还用于:
判断所述队列的所述存入线程是否停止向所述队列存入数据,如果是,则触发所述获取单元,否则,执行所述挂起所述队列的所述存入线程。
在一种可能的实现方式中,该装置还包括:
第二设置单元,用于设置所述相关线程的挂起时间阈值;
第一唤醒单元,用于判断挂起的所述相关线程的挂起时间长度是否大于等于所述挂起时间阈值,如果是,则唤醒所述相关线程。
在一种可能的实现方式中,所述存入线程的挂起条件,包括:所述队列中的当前数据量大于等于所述队列的大小的第二预设比例;
所述挂起单元406,用于判断所述队列中的当前数据量是否大于等于所述队列的大小的第二预设比例,如果是,则挂起所述队列的所述存入线程。
在一种可能的实现方式中,该装置还包括:
第二唤醒单元,用于判断所述队列的所述读取线程是否停止从所述队列中读取数据,如果是,则挂起所述队列的所述存入线程。
在一种可能的实现方式中,所述挂起单元406,还用于当判断出所述相关线程不满足所述挂起条件时,则判断所述相关线程是否挂起,如果是,则唤醒挂起的所述相关线程。
上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本发明实施例提供的一种控制资源占用的方法及装置,具有如下有益效果:
1、本发明实施例提供的一种控制资源占用的方法及装置,根据队列的存入数据的速度和读取数据的速度,确定队列的大小,并创建队列,这样可以合理设置队列的大小,避免队列中存储大量的数据,减少了内存的占用,提高了内存的利用率,实时监测队列中的当前数据量,在队列中的当前数据量满足挂起条件时,将相关线程挂起,减少了CPU的占用,提高了CPU的利用率,总之,本发明提供的方法,提高了资源利用率。
2、本发明实施例提供的一种控制资源占用的方法及装置,通过队列中的当前数据量占队列的大小的比例来确定是否挂起队列的存入线程。在当前数据量大于等于队列的大小的第二预设比例时,则认为队列中有过多的数据没有被处理,占用大量内存,因此,需要停止存入数据,挂起存入线程,节省了内存,减少了CPU的占用。
3、本发明实施例提供的一种控制资源占用的方法及装置,当读取线程停止读取数据时,如果存入线程还向队列中存入数据,会在队列中积累大量数据,消耗内存,并且存入线程也会占用CPU。通过该实现方式,在判断出读取线程停止读取数据后,挂起存入线程,节省了内存资源和CPU资源。
4、本发明实施例提供的一种控制资源占用的方法及装置,通过设置每个队列的大小,控制相关线程的挂起与唤醒,能够灵活的控制系统资源的占用情况,能够提高资源的利用率。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个〃〃〃〃〃〃”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (4)

1.一种控制资源占用的方法,其特征在于,包括:
预先根据队列的存入线程的存入数据的速度和读取线程的读取数据的速度,确定所述队列的大小,其中,所述队列的存入线程用于向所述队列存入数据,所述队列的读取线程用于从所述队列中读取数据;
根据确定出的所述队列的大小,创建所述队列;
预先设置相关线程的挂起条件,所述相关线程包括:所述存入线程、所述读取线程;
还包括:
S1:实时检测所述队列中的当前数据量;
S2:获取所述队列中的当前数据量;
S3:根据获取的所述队列中的当前数据量,判断所述相关线程是否满足所述挂起条件,如果是,则挂起所述相关线程;
所述读取线程的挂起条件,包括:所述队列中的当前数据量小于等于所述队列的大小的第一预设比例;
所述S3,包括:
判断所述队列中的当前数据量是否小于等于所述队列的大小的第一预设比例,如果是,则挂起所述队列的所述读取线程;
在判断出所述队列中的当前数据量小于等于所述队列的大小的第一预设比例时,在执行所述挂起所述队列的所述读取线程之前,还包括:
判断所述队列的所述存入线程是否停止向所述队列存入数据,如果是,则执行步骤S2,否则,执行所述挂起所述队列的所述存入线程。
2.根据权利要求1所述的方法,其特征在于,还包括:
预先设置所述相关线程的挂起时间阈值;
还包括:判断挂起的所述相关线程的挂起时间长度是否大于等于所述挂起时间阈值,如果是,则唤醒所述相关线程。
3.根据权利要求1所述的方法,其特征在于,
所述存入线程的挂起条件,包括:所述队列中的当前数据量大于等于所述队列的大小的第二预设比例;
所述S3,包括:判断所述队列中的当前数据量是否大于等于所述队列的大小的第二预设比例,如果是,则挂起所述队列的所述存入线程;
和/或,
还包括:判断所述队列的所述读取线程是否停止从所述队列中读取数据,如果是,则挂起所述队列的所述存入线程;
和/或,
所述S3,还包括:当判断出所述相关线程不满足所述挂起条件时,则判断所述相关线程是否挂起,如果是,则唤醒挂起的所述相关线程。
4.一种控制资源占用的装置,其特征在于,包括:
确定单元,用于根据队列的存入线程的存入数据的速度和读取线程的读取数据的速度,确定所述队列的大小,其中,所述队列的存入线程用于向所述队列存入数据,所述队列的读取线程用于从所述队列中读取数据;
创建单元,用于根据确定出的所述队列的大小,创建所述队列;
第一设置单元,用于设置相关线程的挂起条件,所述相关线程包括:所述存入线程、所述读取线程;
还包括:
检测单元,用于实时检测所述队列中的当前数据量;
获取单元,用于获取所述队列中的当前数据量;
挂起单元,用于根据所述获取单元获取的所述队列中的当前数据量,判断所述队列中的当前数据量是否小于等于所述队列的大小的第一预设比例,如果是,则挂起所述队列的所述读取线程;
所述挂起单元,在判断出所述队列中的当前数据量小于等于所述队列的大小的第一预设比例时,在执行所述挂起所述队列的所述读取线程之前,还用于:
判断所述队列的所述存入线程是否停止向所述队列存入数据,如果是,则触发所述获取单元,否则,执行所述挂起所述队列的所述存入线程;
第二设置单元,用于设置所述相关线程的挂起时间阈值;
第一唤醒单元,用于判断挂起的所述相关线程的挂起时间长度是否大于等于所述挂起时间阈值,如果是,则唤醒所述相关线程;
所述存入线程的挂起条件,包括:所述队列中的当前数据量大于等于所述队列的大小的第二预设比例;
所述挂起单元,用于判断所述队列中的当前数据量是否大于等于所述队列的大小的第二预设比例,如果是,则挂起所述队列的所述存入线程;
和/或,
还包括:
第二唤醒单元,用于判断所述队列的所述读取线程是否停止从所述队列中读取数据,如果是,则挂起所述队列的所述存入线程;
和/或,
所述挂起单元,还用于当判断出所述相关线程不满足所述挂起条件时,则判断所述相关线程是否挂起,如果是,则唤醒挂起的所述相关线程。
CN201610017583.8A 2016-01-12 2016-01-12 一种控制资源占用的方法及装置 Active CN105677487B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610017583.8A CN105677487B (zh) 2016-01-12 2016-01-12 一种控制资源占用的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610017583.8A CN105677487B (zh) 2016-01-12 2016-01-12 一种控制资源占用的方法及装置

Publications (2)

Publication Number Publication Date
CN105677487A CN105677487A (zh) 2016-06-15
CN105677487B true CN105677487B (zh) 2019-02-15

Family

ID=56300078

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610017583.8A Active CN105677487B (zh) 2016-01-12 2016-01-12 一种控制资源占用的方法及装置

Country Status (1)

Country Link
CN (1) CN105677487B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108628775B (zh) * 2017-03-22 2021-02-12 华为技术有限公司 一种资源管理的方法和装置
CN111427686B (zh) * 2020-03-23 2023-03-24 贵阳块数据城市建设有限公司 一种处理器多线程并发方法
CN113568886A (zh) * 2021-07-21 2021-10-29 上海淇玥信息技术有限公司 一种数据迁移方法、装置和电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030126186A1 (en) * 2001-12-31 2003-07-03 Dion Rodgers Method and apparatus for suspending execution of a thread until a specified memory access occurs
CN102880447A (zh) * 2003-08-28 2013-01-16 美普思科技有限公司 一种在处理器中挂起和释放执行过程中计算线程的整体机制
CN103475899A (zh) * 2013-07-30 2013-12-25 深圳市融创天下科技股份有限公司 数据分发方法和装置
CN104461730A (zh) * 2013-09-22 2015-03-25 华为技术有限公司 一种虚拟资源分配方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030126186A1 (en) * 2001-12-31 2003-07-03 Dion Rodgers Method and apparatus for suspending execution of a thread until a specified memory access occurs
CN102880447A (zh) * 2003-08-28 2013-01-16 美普思科技有限公司 一种在处理器中挂起和释放执行过程中计算线程的整体机制
CN103475899A (zh) * 2013-07-30 2013-12-25 深圳市融创天下科技股份有限公司 数据分发方法和装置
CN104461730A (zh) * 2013-09-22 2015-03-25 华为技术有限公司 一种虚拟资源分配方法及装置

Also Published As

Publication number Publication date
CN105677487A (zh) 2016-06-15

Similar Documents

Publication Publication Date Title
JP4694595B2 (ja) スリープキュー管理
CN100591052C (zh) 流量控制的方法和业务处理系统
CN105677487B (zh) 一种控制资源占用的方法及装置
US7793299B2 (en) System and method for scheduling tasks for execution
CN101694631B (zh) 实时作业调度系统及方法
US10467054B2 (en) Resource management method and system, and computer storage medium
US20070300230A1 (en) Thread priority based on object creation rates
CN109298990A (zh) 日志存储方法、装置、计算机设备及存储介质
CN102736953A (zh) 一种系统资源配置方法和设备
CN109710416B (zh) 资源调度方法及装置
CN109117280B (zh) 电子装置及其限制进程间通信的方法、存储介质
CN105516024A (zh) 一种基于队列的任务流量监控方法及系统
CN106598740A (zh) 一种限制多线程程序占用cpu利用率的系统及限制方法
CN106485141A (zh) Java环境下异常业务线程检测与处理方法
CN105718028A (zh) 一种基于识别耗电应用的省电方法及装置
WO2014094605A1 (zh) 可编程逻辑控制器及其事件驱动编程方法
TW201504949A (zh) 用於選擇性的計時器聯合之系統及方法
WO2023142905A1 (zh) 任务调度方法、装置、终端设备及存储介质
CN114610472A (zh) 异构计算中多进程管理方法及计算设备
JP2008084011A (ja) Cadデータのロード装置
CN109766168B (zh) 任务调度方法和装置、存储介质以及计算设备
CN112860401A (zh) 任务调度方法、装置、电子设备和存储介质
CN107066318A (zh) 一种适用于流计算的数据调度方法
CN108509148B (zh) 一种i/o请求处理方法以及装置
CN112767978B (zh) 一种ddr命令调度方法、装置、设备及介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant