一種控制資源占用的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及一種控制資源占用的方法及裝置。
【背景技術(shù)】
[0002]伴隨著科學(xué)技術(shù)的發(fā)展,各行各業(yè)信息化的程度越來(lái)越高,每天產(chǎn)生了大量的數(shù)據(jù),對(duì)數(shù)據(jù)的處理也就越來(lái)越重要,數(shù)據(jù)慢慢驅(qū)動(dòng)了整個(gè)的業(yè)務(wù)流程。為了充分利用這些數(shù)據(jù),需要對(duì)這些數(shù)據(jù)進(jìn)行數(shù)據(jù)庫(kù)間相互傳輸、數(shù)據(jù)轉(zhuǎn)換等處理。
[0003]在處理數(shù)據(jù)的過(guò)程中,隨著數(shù)據(jù)量的增加,處理數(shù)據(jù)的設(shè)備的負(fù)荷也越來(lái)越重。在處理大量數(shù)據(jù)時(shí),會(huì)占用大量的資源。
[0004]現(xiàn)有技術(shù)中,還沒(méi)有一種控制資源占用的方法,使得現(xiàn)有的數(shù)據(jù)處理方法的資源利用率較低。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實(shí)施例提供了一種控制資源占用的方法及裝置,能夠提高資源利用率。
[0006]—方面,本發(fā)明提供了一種控制資源占用的方法,包括:
[0007]預(yù)先根據(jù)隊(duì)列的存入線程的存入數(shù)據(jù)的速度和讀取線程的讀取數(shù)據(jù)的速度,確定所述隊(duì)列的大小,其中,所述隊(duì)列的存入線程用于向所述隊(duì)列存入數(shù)據(jù),所述隊(duì)列的讀取線程用于從所述隊(duì)列中讀取數(shù)據(jù);
[0008]根據(jù)確定出的所述隊(duì)列的大小,創(chuàng)建所述隊(duì)列;
[0009]預(yù)先設(shè)置相關(guān)線程的掛起條件,所述相關(guān)線程包括:所述存入線程、所述讀取線程;
[0010]還包括:
[0011]S1:實(shí)時(shí)檢測(cè)所述隊(duì)列中的當(dāng)前數(shù)據(jù)量;
[0012]S2:獲取所述隊(duì)列中的當(dāng)前數(shù)據(jù)量;
[0013]S3:根據(jù)獲取的所述隊(duì)列中的當(dāng)前數(shù)據(jù)量,判斷所述相關(guān)線程是否滿足所述掛起條件,如果是,則掛起所述相關(guān)線程。
[0014]進(jìn)一步地,所述讀取線程的掛起條件,包括:所述隊(duì)列中的當(dāng)前數(shù)據(jù)量小于等于所述隊(duì)列的大小的第一預(yù)設(shè)比例;
[0015]所述S3,包括:
[0016]判斷所述隊(duì)列中的當(dāng)前數(shù)據(jù)量是否小于等于所述隊(duì)列的大小的第一預(yù)設(shè)比例,如果是,則掛起所述隊(duì)列的所述讀取線程。
[0017]進(jìn)一步地,在判斷出所述隊(duì)列中的當(dāng)前數(shù)據(jù)量小于等于所述隊(duì)列的大小的第一預(yù)設(shè)比例時(shí),在執(zhí)行所述掛起所述隊(duì)列的所述讀取線程之前,還包括:
[0018]判斷所述隊(duì)列的所述存入線程是否停止向所述隊(duì)列存入數(shù)據(jù),如果是,則執(zhí)行步驟S2,否則,執(zhí)行所述掛起所述隊(duì)列的所述存入線程。
[0019]進(jìn)一步地,該方法還包括:
[0020]預(yù)先設(shè)置所述相關(guān)線程的掛起時(shí)間閾值;
[0021]還包括:判斷掛起的所述相關(guān)線程的掛起時(shí)間長(zhǎng)度是否大于等于所述掛起時(shí)間閾值,如果是,則喚醒所述相關(guān)線程。
[0022]進(jìn)一步地,所述存入線程的掛起條件,包括:所述隊(duì)列中的當(dāng)前數(shù)據(jù)量大于等于所述隊(duì)列的大小的第二預(yù)設(shè)比例;
[0023]所述S3,包括:判斷所述隊(duì)列中的當(dāng)前數(shù)據(jù)量是否大于等于所述隊(duì)列的大小的第二預(yù)設(shè)比例,如果是,則掛起所述隊(duì)列的所述存入線程。
[0024]進(jìn)一步地,該方法還包括:判斷所述隊(duì)列的所述讀取線程是否停止從所述隊(duì)列中讀取數(shù)據(jù),如果是,則掛起所述隊(duì)列的所述存入線程。
[0025]進(jìn)一步地,所述S3,還包括:當(dāng)判斷出所述相關(guān)線程不滿足所述掛起條件時(shí),則判斷所述相關(guān)線程是否掛起,如果是,則喚醒掛起的所述相關(guān)線程。
[0026]另一方面,本發(fā)明提供了一種控制資源占用的裝置,包括:
[0027]確定單元,用于根據(jù)隊(duì)列的存入線程的存入數(shù)據(jù)的速度和讀取線程的讀取數(shù)據(jù)的速度,確定所述隊(duì)列的大小,其中,所述隊(duì)列的存入線程用于向所述隊(duì)列存入數(shù)據(jù),所述隊(duì)列的讀取線程用于從所述隊(duì)列中讀取數(shù)據(jù);
[0028]創(chuàng)建單元,用于根據(jù)確定出的所述隊(duì)列的大小,創(chuàng)建所述隊(duì)列;
[0029]第一設(shè)置單元,用于設(shè)置相關(guān)線程的掛起條件,所述相關(guān)線程包括:所述存入線程、所述讀取線程;
[0030]還包括:
[0031 ]檢測(cè)單元,用于實(shí)時(shí)檢測(cè)所述隊(duì)列中的當(dāng)前數(shù)據(jù)量;
[0032]獲取單元,用于獲取所述隊(duì)列中的當(dāng)前數(shù)據(jù)量;
[0033]掛起單元,用于根據(jù)所述獲取單元獲取的所述隊(duì)列中的當(dāng)前數(shù)據(jù)量,判斷所述相關(guān)線程是否滿足所述掛起條件,如果是,則掛起所述相關(guān)線程。
[0034]進(jìn)一步地,所述讀取線程的掛起條件,包括:所述隊(duì)列中的當(dāng)前數(shù)據(jù)量小于等于所述隊(duì)列的大小的第一預(yù)設(shè)比例;
[0035]所述掛起單元,用于判斷所述隊(duì)列中的當(dāng)前數(shù)據(jù)量是否小于等于所述隊(duì)列的大小的第一預(yù)設(shè)比例,如果是,則掛起所述隊(duì)列的所述讀取線程。
[0036]進(jìn)一步地,所述掛起單元,在判斷出所述隊(duì)列中的當(dāng)前數(shù)據(jù)量小于等于所述隊(duì)列的大小的第一預(yù)設(shè)比例時(shí),在執(zhí)行所述掛起所述隊(duì)列的所述讀取線程之前,還用于:
[0037]判斷所述隊(duì)列的所述存入線程是否停止向所述隊(duì)列存入數(shù)據(jù),如果是,則觸發(fā)所述獲取單元,否則,執(zhí)行所述掛起所述隊(duì)列的所述存入線程。
[0038]進(jìn)一步地,該裝置還包括:
[0039]第二設(shè)置單元,用于設(shè)置所述相關(guān)線程的掛起時(shí)間閾值;
[0040]第一喚醒單元,用于判斷掛起的所述相關(guān)線程的掛起時(shí)間長(zhǎng)度是否大于等于所述掛起時(shí)間閾值,如果是,則喚醒所述相關(guān)線程。
[0041 ]進(jìn)一步地,所述存入線程的掛起條件,包括:所述隊(duì)列中的當(dāng)前數(shù)據(jù)量大于等于所述隊(duì)列的大小的第二預(yù)設(shè)比例;
[0042]所述掛起單元,用于判斷所述隊(duì)列中的當(dāng)前數(shù)據(jù)量是否大于等于所述隊(duì)列的大小的第二預(yù)設(shè)比例,如果是,則掛起所述隊(duì)列的所述存入線程。
[0043]進(jìn)一步地,該裝置還包括:
[0044]第二喚醒單元,用于判斷所述隊(duì)列的所述讀取線程是否停止從所述隊(duì)列中讀取數(shù)據(jù),如果是,則掛起所述隊(duì)列的所述存入線程。
[0045]進(jìn)一步地,所述掛起單元,還用于當(dāng)判斷出所述相關(guān)線程不滿足所述掛起條件時(shí),則判斷所述相關(guān)線程是否掛起,如果是,則喚醒掛起的所述相關(guān)線程。
[0046]本發(fā)明實(shí)施例提供的一種控制資源占用的方法及裝置,根據(jù)隊(duì)列的存入數(shù)據(jù)的速度和讀取數(shù)據(jù)的速度,確定隊(duì)列的大小,并創(chuàng)建隊(duì)列,這樣可以合理設(shè)置隊(duì)列的大小,避免隊(duì)列中存儲(chǔ)大量的數(shù)據(jù),減少了內(nèi)存的占用,提高了內(nèi)存的利用率,實(shí)時(shí)監(jiān)測(cè)隊(duì)列中的當(dāng)前數(shù)據(jù)量,在隊(duì)列中的當(dāng)前數(shù)據(jù)量滿足掛起條件時(shí),將相關(guān)線程掛起,減少了 CPU的占用,提高了 CPU的利用率,總之,本發(fā)明提供的方法,提高了資源利用率。
【附圖說(shuō)明】
[0047]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0048]圖1是本發(fā)明一實(shí)施例提供的一種控制資源占用的方法的流程圖;
[0049]圖2是本發(fā)明一實(shí)施例提供的另一種控制資源占用的方法的流程圖;
[0050]圖3是本發(fā)明一實(shí)施例提供的一種控制資源占用的裝置的示意圖