国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種分配工作任務(wù)的方法及裝置的制造方法

      文檔序號:9547686閱讀:260來源:國知局
      一種分配工作任務(wù)的方法及裝置的制造方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明實(shí)施例涉及信息系統(tǒng)的技術(shù)領(lǐng)域,尤其涉及一種分配工作任務(wù)的方法及裝置。
      【背景技術(shù)】
      [0002]信息系統(tǒng)中工作項(xiàng)是有優(yōu)先級順序的,要求排在前面的工作項(xiàng)先被處理,而且同一個工作項(xiàng)只能發(fā)給一個請求者。在多個人獲取工作項(xiàng)時,要求按請求者到達(dá)的先后順序按序發(fā)放工作項(xiàng),最先請求者取得排在最前面的工作項(xiàng),第二位請求者取得第2個工作項(xiàng),后面的請求者以此類推。
      [0003]針對這種需求,通常的做法是將工作項(xiàng)按序放到內(nèi)存隊列中,這些隊列的實(shí)現(xiàn)方式有多種多樣,數(shù)組、列表、或鏈表等都可以;當(dāng)有請求者請求任務(wù)時,鎖住整個隊列,然后取出最靠前的一個工作項(xiàng),最后釋放對此隊列的鎖。在一個請求者對此隊列加鎖的過程中,其他請求者只能等待。這種內(nèi)存隊列加鎖的方案保證了任務(wù)是按序下發(fā)的,同時保證了同一個工作項(xiàng)不會分發(fā)給兩個以上的請求者,而且由于采用的是內(nèi)存隊列,相比直接從數(shù)據(jù)庫或硬盤文件中獲取任務(wù)來講,大大提高了性能。
      [0004]但這種采用對共享內(nèi)存隊列加鎖的方式有明顯的弊端:第一,會導(dǎo)致資源開銷;第二,會阻塞其他線程的執(zhí)行,使得1個線程占有鎖的過程中其它線程只能等待,被阻塞的線程會被系統(tǒng)暫停任務(wù)的執(zhí)行或使其進(jìn)入睡眠狀態(tài)而不占用處理器,直到取得隊列鎖,該被阻塞的線程才能被喚醒,大量的時間浪費(fèi)在了睡眠等待、搶占鎖、喚醒上,其導(dǎo)致的結(jié)果是處理速度慢、支持的并發(fā)數(shù)少,不能滿足大量作業(yè)人員并發(fā)獲取工作項(xiàng)的需要。

      【發(fā)明內(nèi)容】

      [0005]本發(fā)明實(shí)施例的目的在于提出一種分配工作任務(wù)的方法及裝置,旨在解決如何實(shí)現(xiàn)高效的多線程并發(fā)獲取工作項(xiàng)任務(wù)的問題。
      [0006]為達(dá)此目的,本發(fā)明實(shí)施例采用以下技術(shù)方案:
      [0007]第一方面,一種分配工作任務(wù)的方法,所述方法包括:
      [0008]裝載工作項(xiàng)任務(wù)隊列到二維數(shù)組中,二維數(shù)組的一維表示工作項(xiàng)類型,另一維表示具體的工作項(xiàng)任務(wù)隊列,并為每個工作項(xiàng)類型設(shè)置工作項(xiàng)序號取值范圍;
      [0009]獲取用戶發(fā)送的處理工作任務(wù)的請求;
      [0010]為所述請求創(chuàng)建任務(wù)分配線程;
      [0011]通過所述任務(wù)分配線程執(zhí)行原子操作,為所述請求分配工作項(xiàng)序號;
      [0012]若所分配的工作項(xiàng)序號超過所述工作項(xiàng)類型對應(yīng)的工作項(xiàng)序號取值范圍則返回沒有任務(wù),否則,根據(jù)所述工作項(xiàng)序號提取工作任務(wù),發(fā)送給所述用戶。
      [0013]優(yōu)選地,通過所述任務(wù)分配線程執(zhí)行原子操作,為所述請求分配工作項(xiàng)序號包括:
      [0014]通過所述任務(wù)分配線程,將工作項(xiàng)序號器的計數(shù)值按照設(shè)定規(guī)則進(jìn)行計算,計算確定的數(shù)值作為分配的工作項(xiàng)序號;
      [0015]將工作項(xiàng)序號器的計數(shù)值加1或減1,得到的數(shù)值作為分配的工作項(xiàng)序號。
      [0016]優(yōu)選地,所述通過所述任務(wù)分配線程,將工作項(xiàng)序號器的計數(shù)值按照設(shè)定規(guī)則進(jìn)行計算,計算確定的數(shù)值作為分配的工作項(xiàng)序號之前,還包括:
      [0017]確定所述請求是否包括預(yù)先設(shè)置的工作項(xiàng)類型參數(shù);
      [0018]若確定所述請求包括預(yù)先設(shè)置的工作項(xiàng)類型參數(shù),則通過原子操作為所述請求分配與所述工作項(xiàng)類型參數(shù)對應(yīng)的工作項(xiàng)類型序號;
      [0019]若確定所述請求未包括預(yù)先設(shè)置的工作項(xiàng)類型參數(shù),則為所述請求分配工作項(xiàng)類型序號;
      [0020]根據(jù)所述工作項(xiàng)類型參數(shù),確定對應(yīng)的工作項(xiàng)序號器。
      [0021]優(yōu)選地,所述為所述請求分配工作項(xiàng)類型序號,包括:
      [0022]執(zhí)行原子操作將工作項(xiàng)類型序號器的當(dāng)前計數(shù)值加1或減1,得到新計數(shù)值;
      [0023]若新計數(shù)值超出工作項(xiàng)類型序號的取值范圍,則將工作項(xiàng)類型序號器計數(shù)值設(shè)為取值范圍的最小值或最大值,并將此修改后的數(shù)值作為新計數(shù)值;
      [0024]將新數(shù)值作為分配給所述請求的工作項(xiàng)類型序號。
      [0025]優(yōu)選地,所述根據(jù)所述工作項(xiàng)序號提取工作任務(wù),發(fā)送給所述用戶,包括:
      [0026]根據(jù)所述工作項(xiàng)類型序號和工作項(xiàng)序號從預(yù)先存儲的二維數(shù)組中獲取工作任務(wù),所述二維數(shù)組的行序號對應(yīng)于工作項(xiàng)類型序號,列序號對應(yīng)于工作項(xiàng)序號。
      [0027]優(yōu)選地,所述方法還包括:
      [0028]所述所分配的工作項(xiàng)序號如果超過所屬工作項(xiàng)類型對應(yīng)的工作項(xiàng)序號取值范圍,則如果該工作項(xiàng)類型的任務(wù)裝載線程沒有啟動,則啟動該工作項(xiàng)類型的任務(wù)裝載線程,否貝1J,不需要進(jìn)行啟動任務(wù)裝載線程;
      [0029]工作項(xiàng)類型的任務(wù)裝載線程首先設(shè)置該工作項(xiàng)類型的工作項(xiàng)序號取值范圍為空,清空所述二維數(shù)組中所述工作項(xiàng)類型序號對應(yīng)的所有工作任務(wù),并重新裝載該工作項(xiàng)類型的工作任務(wù)到二維數(shù)組中,并設(shè)置該工作項(xiàng)類型的工作項(xiàng)序號取值范圍與所裝載的工作項(xiàng)個數(shù)相匹配。
      [0030]第二方面,一種獲取工作任務(wù)的裝置,所述裝置包括:
      [0031]裝載模塊,用于裝載工作項(xiàng)任務(wù)隊列到二維數(shù)組中,二維數(shù)組的一維表示工作項(xiàng)類型,另一維表示具體的工作項(xiàng)任務(wù)隊列,并為每個工作項(xiàng)類型設(shè)置工作項(xiàng)序號取值范圍;
      [0032]第一獲取模塊,用于獲取用戶發(fā)送的處理工作任務(wù)的請求;
      [0033]創(chuàng)建模塊,用于為所述請求創(chuàng)建任務(wù)分配線程;
      [0034]第一分配模塊,用于通過所述任務(wù)分配線程執(zhí)行原子操作,為所述請求分配工作項(xiàng)序號;
      [0035]發(fā)送模塊,若所分配的工作項(xiàng)序號超過所述工作項(xiàng)類型對應(yīng)的工作項(xiàng)序號取值范圍則返回沒有任務(wù),否則,根據(jù)所述工作項(xiàng)序號提取工作任務(wù),發(fā)送給所述用戶。
      [0036]優(yōu)選地,所述第一分配模塊,包括:
      [0037]計算單元,用于通過所述任務(wù)分配線程,將工作項(xiàng)序號器的計數(shù)值按照設(shè)定規(guī)則進(jìn)行計算,計算確定的數(shù)值作為分配的工作項(xiàng)序號;
      [0038]所述計算單元,用于:
      [0039]通過所述任務(wù)分配線程,將工作項(xiàng)序號器的計數(shù)值加1或減1,確定的數(shù)值作為分配的工作項(xiàng)序號。
      [0040]優(yōu)選地,所述裝置還包括:
      [0041]第一確定模塊,用于在通過所述任務(wù)分配線程,將工作項(xiàng)序號器的計數(shù)值按照設(shè)定規(guī)則進(jìn)行計算,計算確定的數(shù)值作為分配的工作項(xiàng)序號之前,確定所述請求是否包括預(yù)先設(shè)置的工作項(xiàng)類型參數(shù);
      [0042]第二分配模塊,用于若確定所述請求包括預(yù)先設(shè)置的工作項(xiàng)類型參數(shù),則通過原子操作為所述請求分配與所述工作項(xiàng)類型參數(shù)對應(yīng)的工作項(xiàng)類型序號;
      [0043]第三分配模塊,用于若確定所述請求未包括預(yù)先設(shè)置的工作項(xiàng)類型參數(shù),則為所述請求分配工作項(xiàng)類型序號;
      [0044]第二確定模塊,用于根據(jù)所述工作項(xiàng)類型參數(shù),確定對應(yīng)的工作項(xiàng)序號器。
      [0045]優(yōu)選地,所述第三分配模塊,用于:
      [0046]執(zhí)行原子操作將工作項(xiàng)類型序號器的當(dāng)前計數(shù)值加1或減1,得到新計數(shù)值;
      [0047]若新計數(shù)值超出工作項(xiàng)類型序號的取值范圍,則將工作項(xiàng)類型序號器計數(shù)值設(shè)為取值范圍的最小值或最大值,并將此修改后的數(shù)值作為新計數(shù)值;
      [0048]將新數(shù)值作為分配給所述請求的工作項(xiàng)類型序號。
      [0049]優(yōu)選地,所述發(fā)送模塊,用于:
      [0050]根據(jù)所述工作項(xiàng)類型序號和工作項(xiàng)序號從預(yù)先存儲的二維數(shù)組中獲取工作任務(wù),所述二維數(shù)組的行序號對應(yīng)于工作項(xiàng)類型序號,列序號對應(yīng)于工作項(xiàng)序號。
      [0051 ] 優(yōu)選地,所述裝置還包括:
      [0052]啟動模塊,用于所述所分配的工作項(xiàng)序號如果超過所屬工作項(xiàng)類型對應(yīng)的工作項(xiàng)序號取值范圍,則如果該工作項(xiàng)類型的任務(wù)裝載線程沒有啟動,則啟動該工作項(xiàng)類型的任務(wù)裝載線程,否則,不需要進(jìn)行啟動任務(wù)裝載線程;
      [0053]處理模塊,用于工作項(xiàng)類型的任務(wù)裝載線程首先設(shè)置該工作項(xiàng)類型的工作項(xiàng)序號取值范圍為空,清空所述二維數(shù)組中所述工作項(xiàng)類型序號對應(yīng)的所有工作任務(wù),并重新裝載該工作項(xiàng)類型的工作任務(wù)到二維數(shù)組中,并設(shè)置該工作項(xiàng)類型的工作項(xiàng)序號取值范圍與所裝載的工作項(xiàng)個數(shù)相匹配。
      [0054]本發(fā)明實(shí)施例通過裝載工作項(xiàng)任務(wù)隊列到二維數(shù)組中,二維數(shù)組的一維表示工作項(xiàng)類型,另一維表示具體的工作項(xiàng)任務(wù)隊列,并為每個工作項(xiàng)類型設(shè)置工作項(xiàng)序號取值范圍,獲取用戶發(fā)送的處理工作任務(wù)的請求;為所述請求創(chuàng)建任務(wù)分配線程,棄用加鎖、解鎖處理,減少排隊、耗時等的處理,支持多路并發(fā)的用戶發(fā)送的工作任務(wù)的請求;通過所述任務(wù)分配線程執(zhí)行原子操作,為所述請求分配工作項(xiàng)序號;若所分配的工作項(xiàng)序號超過所述工作項(xiàng)類型對應(yīng)的工作項(xiàng)序號取值范圍則返回沒有任務(wù),否則,根據(jù)所述工作項(xiàng)序號提取工作任務(wù),發(fā)送給所述用戶,從而實(shí)現(xiàn)多路并發(fā)請求工作任務(wù)的目的,極大的提高系統(tǒng)處理性能。
      【附圖說明】
      [0055]圖1是本發(fā)明實(shí)施例分配工作任務(wù)的方法第一實(shí)施例的流程示意圖;
      [0056]圖2是本發(fā)明實(shí)施例分配工作任務(wù)的方法第二實(shí)施例的流程示意圖;
      [0057]圖3是本發(fā)明實(shí)施例提供的另一分配工作任務(wù)的方法的示意圖;
      [0058]圖4是本發(fā)明實(shí)施例分配工作任務(wù)的裝置的功能模塊示意圖;
      [0059]圖5是本發(fā)明實(shí)施例第一分配模塊504的功能模塊不意圖;
      [0060]圖6是本發(fā)明實(shí)
      當(dāng)前第1頁1 2 3 4 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1