日韩成人黄色,透逼一级毛片,狠狠躁天天躁中文字幕,久久久久久亚洲精品不卡,在线看国产美女毛片2019,黄片www.www,一级黄色毛a视频直播

任務(wù)處理方法和裝置的制作方法

文檔序號(hào):6333162閱讀:251來源:國知局
專利名稱:任務(wù)處理方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及任務(wù)處理技術(shù),尤其涉及任務(wù)處理方法和裝置。
背景技術(shù)
在企業(yè)管理軟件中,存在大量的異步任務(wù),比如發(fā)送各種通知(消息,短信,電子 郵件等),執(zhí)行某些自動(dòng)動(dòng)作(自動(dòng)調(diào)用服務(wù)等)。隨著用戶壓力的增加,在短時(shí)間內(nèi)會(huì)產(chǎn) 生大量的這些任務(wù)。已有的解決方法一般分為兩種一種是將這些任務(wù)排入一個(gè)先入先出 (FIFO)隊(duì)列,然后一個(gè)個(gè)按順序執(zhí)行;另外一種則是通過一個(gè)線程池,多線程的將任務(wù)并 行執(zhí)行。前者的優(yōu)點(diǎn)是不會(huì)由于任務(wù)過多而占用大量的系統(tǒng)資源,缺點(diǎn)是浪費(fèi)了計(jì)算機(jī)并 行處理能力,效率低下。后者的優(yōu)點(diǎn)是盡可能的最大化利用了系統(tǒng)的并行計(jì)算能力,但缺 點(diǎn)也很明顯,一方面由于同時(shí)執(zhí)行的任務(wù)可能存在約束或競爭關(guān)系,導(dǎo)致需要線程同步,就 帶來了額外的系統(tǒng)開銷(線程切換,鎖競爭等),在任務(wù)之間約束和競爭關(guān)系比較多的情況 下,反而會(huì)造成系統(tǒng)效率低下,另一方面由于大部分線程池?zé)o法提供很好的伸縮性(負(fù)載 可控),造成大負(fù)載情況下對(duì)系統(tǒng)資源的過度占用,極大的影響了用戶體驗(yàn)。因此,需要一種任務(wù)處理方式,能夠最大限度地利用計(jì)算機(jī)的并行能力,而又避免 由于任務(wù)之間的約束帶來的線程同步,耗費(fèi)系統(tǒng)資源的問題。

發(fā)明內(nèi)容
鑒于以上,本發(fā)明的技術(shù)方案所要解決的技術(shù)問題在于,提供一種任務(wù)處理方法 和裝置,能夠最大限度地利用計(jì)算機(jī)的并行能力,而又避免由于任務(wù)之間的約束帶來的線 程同步,耗費(fèi)系統(tǒng)資源的問題。本發(fā)明提供了一種任務(wù)處理方法,包括步驟102,接收輸入的任務(wù);步驟104,判 斷所述任務(wù)是否具有同步屬性,在所述任務(wù)具有同步屬性時(shí),進(jìn)入步驟106,在所述任務(wù)不 具有同步屬性時(shí),進(jìn)入步驟110 ;所述步驟106,根據(jù)所述任務(wù)的同步屬性,在當(dāng)前執(zhí)行任務(wù) 中查找所述任務(wù)對(duì)應(yīng)的排他任務(wù);步驟108,在當(dāng)前執(zhí)行任務(wù)中存在所述任務(wù)對(duì)應(yīng)的排他 任務(wù)時(shí),不執(zhí)行所述任務(wù),直至所述當(dāng)前執(zhí)行任務(wù)中不存在所述任務(wù)對(duì)應(yīng)的排他任務(wù),所述 步驟110,執(zhí)行所述任務(wù)。通過該技術(shù)方案,可以避免同時(shí)執(zhí)行任務(wù)時(shí)由于相互競爭導(dǎo)致對(duì) 系統(tǒng)資源的爭奪,保證了執(zhí)行任務(wù)的次序和效率,合理利用計(jì)算機(jī)的系統(tǒng)資源。在上述技術(shù)方案中,優(yōu)選地,所述步驟108中,在當(dāng)前執(zhí)行任務(wù)中存在所述任務(wù)對(duì) 應(yīng)的排他任務(wù)時(shí),根據(jù)所述任務(wù)的同步屬性,將所述任務(wù)分配至對(duì)應(yīng)的排他隊(duì)列,在所述當(dāng) 前執(zhí)行任務(wù)中不存在所述任務(wù)對(duì)應(yīng)的排他任務(wù)時(shí),從所述任務(wù)對(duì)應(yīng)的排他隊(duì)列里取出所述 任務(wù),以待執(zhí)行。在上述技術(shù)方案中,優(yōu)選地,排他隊(duì)列中的所有任務(wù)均具有優(yōu)先級(jí),從所述排他隊(duì) 列中取出任務(wù)時(shí),先取出優(yōu)先級(jí)最高的任務(wù)。通過該技術(shù)方案,通過優(yōu)先級(jí)調(diào)節(jié),保證了任 務(wù)執(zhí)行的次序。在上述技術(shù)方案中,優(yōu)選地,在所述步驟110中,所述任務(wù)通過線程池提供的線程
4執(zhí)行。在上述技術(shù)方案中,優(yōu)選地,在所述步驟110中,所述當(dāng)前執(zhí)行任務(wù)占用所述線程 池的所有線程時(shí),使所述任務(wù)進(jìn)入等待狀態(tài),直至所述線程池中存在空余線程,使用所述空 余線程執(zhí)行所述任務(wù)。通過該技術(shù)方案,可以很好地控制系統(tǒng)的伸縮性。在上述技術(shù)方案中,優(yōu)選地,處于所述等待狀態(tài)的所有任務(wù)均具有優(yōu)先級(jí),在所述 線程池里僅出現(xiàn)一個(gè)空余線程時(shí),將所述一個(gè)空余線程用于執(zhí)行優(yōu)先級(jí)最高的任務(wù)。通過 該技術(shù)方案,使得等待隊(duì)列中的任務(wù)也具有優(yōu)先級(jí)。在上述技術(shù)方案中,優(yōu)選地,所述步驟108中,所述任務(wù)具有多個(gè)同步屬性,以及 在當(dāng)前執(zhí)行任務(wù)中存在對(duì)應(yīng)任務(wù)的不同同步屬性的多個(gè)排他任務(wù),根據(jù)所述不同同步屬性 的優(yōu)先程度,將所述任務(wù)分配至優(yōu)先程度最高的同步屬性對(duì)應(yīng)的排他隊(duì)列,排他隊(duì)列包括 全局排他隊(duì)列,所述全局排他隊(duì)列中的任務(wù)只能單獨(dú)執(zhí)行;類別排他隊(duì)列,所述類別排他隊(duì) 列中的任務(wù)不能與所述類別排他隊(duì)列對(duì)應(yīng)類型的任務(wù)同時(shí)執(zhí)行。通過上述技術(shù)方案,通過實(shí)現(xiàn)同步隊(duì)列將具有約束關(guān)系的任務(wù)進(jìn)行同步排隊(duì),避 免了任務(wù)之間的競爭,然后利用優(yōu)先級(jí)調(diào)節(jié)隊(duì)列中任務(wù)的執(zhí)行滯后性,同時(shí)通過等待隊(duì)列 和設(shè)置任務(wù)數(shù)可同時(shí)執(zhí)行任務(wù)的最大數(shù)目,使負(fù)載能力可控,具有良好的系統(tǒng)伸縮性。本發(fā)明還提供了一種任務(wù)處理裝置,包括調(diào)度模塊,判斷輸入的任務(wù)是否具有同 步屬性,在所述任務(wù)具有同步屬性時(shí),將所述任務(wù)提交至同步控制模塊,在所述任務(wù)不具有 同步屬性時(shí),將所述任務(wù)提交至任務(wù)執(zhí)行模塊;所述同步控制模塊,根據(jù)所述任務(wù)的同步屬 性,在當(dāng)前執(zhí)行任務(wù)中查找所述任務(wù)對(duì)應(yīng)的排他任務(wù),并在所述當(dāng)前執(zhí)行任務(wù)中不存在所 述任務(wù)對(duì)應(yīng)的排他任務(wù)時(shí),將所述任務(wù)通過所述調(diào)度模塊提交至所述任務(wù)執(zhí)行模塊;所述 任務(wù)執(zhí)行模塊,執(zhí)行所述任務(wù)。通過該技術(shù)方案,可以避免同時(shí)執(zhí)行任務(wù)時(shí)由于相互競爭導(dǎo) 致對(duì)系統(tǒng)資源的爭奪,保證了執(zhí)行任務(wù)的次序和效率,合理利用計(jì)算機(jī)的系統(tǒng)資源。在上述技術(shù)方案中,優(yōu)選地,還包括同步隊(duì)列模塊,提供排他隊(duì)列,所述同步控制 模塊在當(dāng)前執(zhí)行任務(wù)中存在所述任務(wù)對(duì)應(yīng)的排他任務(wù)時(shí),根據(jù)所述任務(wù)的同步屬性,通過 所述同步隊(duì)列模塊將所述任務(wù)分配至對(duì)應(yīng)的排他隊(duì)列,在所述當(dāng)前執(zhí)行任務(wù)中不存在所述 任務(wù)對(duì)應(yīng)的排他任務(wù)時(shí),通過所述同步隊(duì)列模塊從所述任務(wù)對(duì)應(yīng)的排他隊(duì)列里取出所述任 務(wù),由所述調(diào)度模塊將所述任務(wù)提交至所述任務(wù)執(zhí)行模塊,以待執(zhí)行。在上述技術(shù)方案中,優(yōu)選地,所述同步隊(duì)列模塊還供用戶制定不同類型的排他隊(duì) 列。通過該技術(shù)方案,使得任務(wù)的處理更加靈活。通過上述技術(shù)方案,通過實(shí)現(xiàn)同步隊(duì)列將具有約束關(guān)系的任務(wù)進(jìn)行同步排隊(duì),避 免了任務(wù)之間的競爭,然后利用優(yōu)先級(jí)調(diào)節(jié)隊(duì)列中任務(wù)的執(zhí)行滯后性,同時(shí)通過等待隊(duì)列 和設(shè)置任務(wù)數(shù)可同時(shí)執(zhí)行任務(wù)的最大數(shù)目,使負(fù)載能力可控,具有良好的系統(tǒng)伸縮性。


圖1是根據(jù)本發(fā)明的一個(gè)實(shí)施例的任務(wù)處理方法的流程圖;圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施例的任務(wù)處理裝置的框圖;圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施例的任務(wù)處理裝置的功能模塊示意圖;圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例的任務(wù)處理裝置的任務(wù)執(zhí)行模塊以狀態(tài)機(jī)方式 工作的運(yùn)行示意圖;以及
圖5是根據(jù)本發(fā)明的一個(gè)實(shí)施例的任務(wù)處理方法的流程圖。
具體實(shí)施例方式為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點(diǎn),下面結(jié)合附圖和具體實(shí) 施方式對(duì)本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)描述。在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可 以采用其他不同于在此描述的其他方式來實(shí)施,因此,本發(fā)明并不限于下面公開的具體實(shí) 施例的限制。圖1是根據(jù)本發(fā)明的一個(gè)實(shí)施例的任務(wù)處理方法的流程圖。如圖1所示,根據(jù)本發(fā)明的實(shí)施例的任務(wù)處理方法包括步驟102,接收輸入的 任務(wù);步驟104,判斷所述任務(wù)是否具有同步屬性,在所述任務(wù)具有同步屬性時(shí),進(jìn)入步驟 106,在所述任務(wù)不具有同步屬性時(shí),進(jìn)入步驟110 ;所述步驟106,根據(jù)所述任務(wù)的同步屬 性,在當(dāng)前執(zhí)行任務(wù)中查找所述任務(wù)對(duì)應(yīng)的排他任務(wù);步驟108,在當(dāng)前執(zhí)行任務(wù)中存在所 述任務(wù)對(duì)應(yīng)的排他任務(wù)時(shí),不執(zhí)行所述任務(wù),直至所述當(dāng)前執(zhí)行任務(wù)中不存在所述任務(wù)對(duì) 應(yīng)的排他任務(wù),所述步驟110,執(zhí)行所述任務(wù)。通過這樣的技術(shù)方案,可以避免同時(shí)執(zhí)行任務(wù) 時(shí)由于相互競爭導(dǎo)致對(duì)系統(tǒng)資源的爭奪,保證了執(zhí)行任務(wù)的次序和效率,合理利用計(jì)算機(jī) 的系統(tǒng)資源。在上述技術(shù)方案中,所述步驟108中,在當(dāng)前執(zhí)行任務(wù)中存在所述任務(wù)對(duì)應(yīng)的排 他任務(wù)時(shí),根據(jù)所述任務(wù)的同步屬性,將所述任務(wù)分配至對(duì)應(yīng)的排他隊(duì)列,在所述當(dāng)前執(zhí)行 任務(wù)中不存在所述任務(wù)對(duì)應(yīng)的排他任務(wù)時(shí),從所述任務(wù)對(duì)應(yīng)的排他隊(duì)列里取出所述任務(wù), 以待執(zhí)行。在上述技術(shù)方案中,排他隊(duì)列中的所有任務(wù)均具有優(yōu)先級(jí),從所述排他隊(duì)列中取 出任務(wù)時(shí),先取出優(yōu)先級(jí)最高的任務(wù)。這樣,通過優(yōu)先級(jí)調(diào)節(jié),保證了任務(wù)執(zhí)行的次序。在上述技術(shù)方案中,在所述步驟110中,所述任務(wù)通過線程池提供的線程執(zhí)行。在上述技術(shù)方案中,在所述步驟110中,所述當(dāng)前執(zhí)行任務(wù)占用所述線程池的所 有線程時(shí),使所述任務(wù)進(jìn)入等待狀態(tài),直至所述線程池中存在空余線程,使用所述空余線程 執(zhí)行所述任務(wù)。因此,可以很好地控制系統(tǒng)的伸縮性。在上述技術(shù)方案中,處于所述等待狀態(tài)的所有任務(wù)均具有優(yōu)先級(jí),在所述線程池 里僅出現(xiàn)一個(gè)空余線程時(shí),將所述一個(gè)空余線程用于執(zhí)行優(yōu)先級(jí)最高的任務(wù)。通過該技術(shù) 方案,使得等待隊(duì)列中的任務(wù)也具有優(yōu)先級(jí)。在上述技術(shù)方案中,所述步驟108中,所述任務(wù)具有多個(gè)同步屬性,以及在當(dāng)前執(zhí) 行任務(wù)中存在對(duì)應(yīng)任務(wù)的不同同步屬性的多個(gè)排他任務(wù),根據(jù)所述不同同步屬性的優(yōu)先程 度,將所述任務(wù)分配至優(yōu)先程度最高的同步屬性對(duì)應(yīng)的排他隊(duì)列,排他隊(duì)列包括全局排他 隊(duì)列,所述全局排他隊(duì)列中的任務(wù)只能單獨(dú)執(zhí)行;類別排他隊(duì)列,所述類別排他隊(duì)列中的任 務(wù)不能與所述類別排他隊(duì)列對(duì)應(yīng)類型的任務(wù)同時(shí)執(zhí)行。通過上述技術(shù)方案,通過實(shí)現(xiàn)同步隊(duì)列將具有約束關(guān)系的任務(wù)進(jìn)行同步排隊(duì),避 免了任務(wù)之間的競爭,然后利用優(yōu)先級(jí)調(diào)節(jié)隊(duì)列中任務(wù)的執(zhí)行滯后性,同時(shí)通過等待隊(duì)列 和設(shè)置任務(wù)數(shù)可同時(shí)執(zhí)行任務(wù)的最大數(shù)目,使負(fù)載能力可控,具有良好的系統(tǒng)伸縮性。圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施例的任務(wù)處理裝置的框圖。
如圖2所示,根據(jù)本發(fā)明的實(shí)施例的任務(wù)處理裝置200包括調(diào)度模塊202,判斷 輸入的任務(wù)是否具有同步屬性,在所述任務(wù)具有同步屬性時(shí),將所述任務(wù)提交至同步控制 模塊,在所述任務(wù)不具有同步屬性時(shí),將所述任務(wù)提交至任務(wù)執(zhí)行模塊;所述同步控制模 塊204,根據(jù)所述任務(wù)的同步屬性,在當(dāng)前執(zhí)行任務(wù)中查找所述任務(wù)對(duì)應(yīng)的排他任務(wù),并在 所述當(dāng)前執(zhí)行任務(wù)中不存在所述任務(wù)對(duì)應(yīng)的排他任務(wù)時(shí),將所述任務(wù)通過所述調(diào)度模塊提 交至所述任務(wù)執(zhí)行模塊;所述任務(wù)執(zhí)行模塊206,執(zhí)行所述任務(wù)。通過這樣的技術(shù)方案,可 以避免同時(shí)執(zhí)行任務(wù)時(shí)由于相互競爭導(dǎo)致對(duì)系統(tǒng)資源的爭奪,保證了執(zhí)行任務(wù)的次序和效 率,合理利用計(jì)算機(jī)的系統(tǒng)資源。在上述技術(shù)方案中,還可以包括同步隊(duì)列模塊,提供排他隊(duì)列,所述同步控制模 塊在當(dāng)前執(zhí)行任務(wù)中存在所述任務(wù)對(duì)應(yīng)的排他任務(wù)時(shí),根據(jù)所述任務(wù)的同步屬性,通過所 述同步隊(duì)列模塊將所述任務(wù)分配至對(duì)應(yīng)的排他隊(duì)列,在所述當(dāng)前執(zhí)行任務(wù)中不存在所述任 務(wù)對(duì)應(yīng)的排他任務(wù)時(shí),通過所述同步隊(duì)列模塊從所述任務(wù)對(duì)應(yīng)的排他隊(duì)列里取出所述任 務(wù),由所述調(diào)度模塊將所述任務(wù)提交至所述任務(wù)執(zhí)行模塊,以待執(zhí)行。在上述技術(shù)方案中,所述同步隊(duì)列模塊還供用戶制定不同類型的排他隊(duì)列。因此, 使得任務(wù)的處理更加靈活。通過上述技術(shù)方案,通過實(shí)現(xiàn)同步隊(duì)列將具有約束關(guān)系的任務(wù)進(jìn)行同步排隊(duì),避 免了任務(wù)之間的競爭,然后利用優(yōu)先級(jí)調(diào)節(jié)隊(duì)列中任務(wù)的執(zhí)行滯后性,同時(shí)通過等待隊(duì)列 和設(shè)置任務(wù)數(shù)可同時(shí)執(zhí)行任務(wù)的最大數(shù)目,使負(fù)載能力可控,具有良好的系統(tǒng)伸縮性。圖3是根據(jù)本發(fā)明的一個(gè)實(shí)施例的任務(wù)處理裝置的功能模塊示意圖。如圖3所示,調(diào)度控制模塊302 (相當(dāng)于圖2實(shí)施例中的調(diào)度模塊202)作為中央 控制模塊,通過協(xié)調(diào)同步控制模塊304和任務(wù)執(zhí)行模塊306控制任務(wù)的同步和執(zhí)行。同步控制模塊304 負(fù)責(zé)同步任務(wù)的同步控制(出入隊(duì)),并根據(jù)同步狀態(tài)提供可 執(zhí)行任務(wù)。任務(wù)執(zhí)行模塊306 以狀態(tài)機(jī)的模式負(fù)責(zé)任務(wù)的具體執(zhí)行。狀態(tài)機(jī)如圖4所示,分 為三種狀態(tài)空閑(Idle),可運(yùn)行(Running),已滿載(Overflow)。同步隊(duì)列模塊308 同步策略的具體實(shí)現(xiàn),可提供多種同步策略,如排他同步,類 別同步等,通過隊(duì)列的方式實(shí)現(xiàn)各種同步行為。等待隊(duì)列模塊312 為可執(zhí)行的任務(wù)提供伸縮性支持。優(yōu)先級(jí)控制模塊310 以優(yōu)先隊(duì)列的方式負(fù)責(zé)為同步隊(duì)列和等待隊(duì)列提供優(yōu)先級(jí) 控制。其中,圖4是根據(jù)本發(fā)明的一個(gè)實(shí)施例的任務(wù)處理裝置的任務(wù)執(zhí)行模塊以狀態(tài)機(jī) 方式工作的運(yùn)行示意圖。Idle狀態(tài)即表明任務(wù)執(zhí)行模塊306無任何任務(wù)在執(zhí)行,當(dāng)有任務(wù) 派發(fā)過來時(shí)即轉(zhuǎn)化為Running狀態(tài),Running狀態(tài)即表明有任務(wù)在任務(wù)執(zhí)行模塊306運(yùn)行, 但還有空余線程可用,當(dāng)正在運(yùn)行的任務(wù)已達(dá)最大數(shù)目Running狀態(tài)即轉(zhuǎn)化為Overflow 狀態(tài),處于Idle或Running狀態(tài)下,任務(wù)執(zhí)行模塊306收到派發(fā)的任務(wù)后將立即執(zhí)行,處 于Overflow狀態(tài)下,將任務(wù)入隊(duì)到等待隊(duì)列模塊312 (這樣就可以很好的控制系統(tǒng)的伸縮 性),直到當(dāng)前某個(gè)執(zhí)行的任務(wù)完成后,狀態(tài)又將重新轉(zhuǎn)化為Running狀態(tài),然后從等待隊(duì) 列中出隊(duì)任務(wù)進(jìn)行執(zhí)行,同樣,當(dāng)任務(wù)全部完成,狀態(tài)又將轉(zhuǎn)化為Idle狀態(tài),循環(huán)往復(fù)執(zhí) 行;任務(wù)的執(zhí)行是在操作系統(tǒng)線程池上,因此任務(wù)的執(zhí)行和整個(gè)調(diào)度過程是異步的,不會(huì)阻塞調(diào)度線程,同時(shí)用戶可以通過任務(wù)執(zhí)行模塊306動(dòng)態(tài)指定系統(tǒng)執(zhí)行任務(wù)的最大數(shù)目。圖5是根據(jù)本發(fā)明的一個(gè)實(shí)施例的任務(wù)處理方法的流程圖。如圖5所示,在步驟502,輸入需要處理的任務(wù)。在步驟504,以時(shí)間間隔的方式通過接口或查詢數(shù)據(jù)源獲得一批任務(wù),根據(jù)任務(wù)的 屬性判斷是否將任務(wù)進(jìn)行同步控制,是則進(jìn)入步驟506,否則進(jìn)入步驟518。在步驟506,將任務(wù)進(jìn)行同步控制。在步驟508,根據(jù)任務(wù)的屬性判斷是否為排他同步,是則進(jìn)入步驟510,否則進(jìn)入 步驟512。在步驟510,將任務(wù)排入全局排他隊(duì)列。在步驟512,判斷任務(wù)是否為類別同步,是則進(jìn)入步驟514,否則進(jìn)入步驟516。在步驟514,將任務(wù)排入類別同步隊(duì)列。在步驟516,將任務(wù)進(jìn)行其他同步處理。在步驟518,將任務(wù)派送并執(zhí)行。在步驟520,判斷任務(wù)是否處于可執(zhí)行狀態(tài),是則進(jìn)入步驟522,否則進(jìn)入步驟 524。在步驟522,將任務(wù)排入等待隊(duì)列。在步驟524,按照?qǐng)D4所示的運(yùn)行流程,執(zhí)行該任務(wù)。在這里,需要說明的是,將入隊(duì)任務(wù)進(jìn)行同步控制時(shí),使用不同的同步策略的隊(duì)列 來控制任務(wù)的同步等待。同步隊(duì)列包括全局排他隊(duì)列,指的是該類任務(wù)在一臺(tái)計(jì)算機(jī)上在 同一時(shí)間只能單獨(dú)執(zhí)行,不允許其他任務(wù)同時(shí)執(zhí)行,進(jìn)入條件為只要當(dāng)前正在執(zhí)行的任務(wù) 中有全局排他任務(wù),其他任務(wù)就必須進(jìn)入該隊(duì)列進(jìn)行同步等待;類別排他隊(duì)列,指的是按照 用戶定義的某種分類,只要屬于該分類的任務(wù)在當(dāng)前系統(tǒng)執(zhí)行,那么就必須進(jìn)入該分類的 隊(duì)列進(jìn)行同步等待。其他同步隊(duì)列,指的是由于本發(fā)明具有擴(kuò)展性,用戶可以定義具有其他 同步策略的隊(duì)列。任一個(gè)同步隊(duì)列的實(shí)現(xiàn)都遵循如下規(guī)則1.隊(duì)列分為兩種狀態(tài)a)就緒狀態(tài)b)同步狀態(tài);2.處于就緒狀態(tài)下,可以進(jìn)行入隊(duì)操作,也可以進(jìn)行出隊(duì)操作,如果是出隊(duì)操作隊(duì) 列狀態(tài)轉(zhuǎn)化為同步狀態(tài);3.處于同步狀態(tài)下,可以入隊(duì),但不能出隊(duì),如果收到同步控制信號(hào),隊(duì)列狀態(tài)轉(zhuǎn) 換為就緒狀態(tài);通過如上規(guī)則,從抽象的角度定義了同步的語義,而把每個(gè)任務(wù)具體需要與哪個(gè) 或哪類任務(wù)同步留給了各個(gè)隊(duì)列去具體實(shí)現(xiàn)。通過遍歷處于就緒狀態(tài)同步隊(duì)列,對(duì)其進(jìn)行 出隊(duì)操作,得到的任務(wù)排隊(duì)即為可執(zhí)行任務(wù)列表。需要注意的是,在混合同步模式下,即該任務(wù)可能需要通過多個(gè)同步隊(duì)列進(jìn)行同 步控制時(shí),可能會(huì)喪失一部分時(shí)序上的優(yōu)先,導(dǎo)致任務(wù)執(zhí)行滯后。如某任務(wù)A先進(jìn)入全局排 他隊(duì)列,一分鐘后某任務(wù)B緊接著直接進(jìn)入類別同步隊(duì)列,假設(shè)任務(wù)A和B在任務(wù)本身的優(yōu) 先級(jí)別上是一致的,那么現(xiàn)在任務(wù)A在時(shí)序上要提前于任務(wù)B,按照時(shí)序優(yōu)先的原則,任務(wù)A 應(yīng)該優(yōu)先于任務(wù)B,然后全局排他隊(duì)列接到同步通知釋放任務(wù)A,任務(wù)A接著進(jìn)入類別同步 隊(duì)列(晚于任務(wù)B進(jìn)入該隊(duì)列的時(shí)間),這時(shí)為了保障任務(wù)A的執(zhí)行順序領(lǐng)先于任務(wù)B,就將通過優(yōu)先級(jí)控制提高任務(wù)A的優(yōu)先級(jí)別。同樣的,等待隊(duì)列中的任務(wù)在經(jīng)過了同步控制 之后也喪失了時(shí)序上的優(yōu)先,同樣為了解決此問題,等待隊(duì)列也需要調(diào)節(jié)優(yōu)先級(jí)。另外,當(dāng)一個(gè)任務(wù)執(zhí)行完之后,該任務(wù)所在的線程將回調(diào)并通知該任務(wù)的結(jié)束同 步,接到通知后,按該任務(wù)的屬性找到該任務(wù)對(duì)應(yīng)的同步隊(duì)列,然后通知該隊(duì)列結(jié)束同步, 導(dǎo)致同步隊(duì)列狀態(tài)發(fā)生改變,接著再檢索處于就緒狀態(tài)的隊(duì)列返回可執(zhí)行任務(wù)列表,再將 這些任務(wù)進(jìn)行任務(wù)執(zhí)行,重復(fù)圖4所示的執(zhí)行方法。通過上述技術(shù)方案,可以實(shí)現(xiàn)一種任務(wù)處理方法和裝置,其具有下列優(yōu)點(diǎn)1.將有約束關(guān)系的任務(wù)進(jìn)行排隊(duì),使其按順序執(zhí)行,避免了同時(shí)執(zhí)行時(shí)由于相互 競爭導(dǎo)致對(duì)系統(tǒng)資源的爭奪,既達(dá)到了同步的目的,同時(shí)又提高了系統(tǒng)效率。2.可擴(kuò)展的可混合的多階段同步隊(duì)列實(shí)現(xiàn)方法,可以支持多種同步隊(duì)列并且混合 使用,同時(shí)通過優(yōu)先級(jí)調(diào)節(jié)保證了任務(wù)執(zhí)行的次序問題。3.利用設(shè)置最大任務(wù)數(shù)和等待隊(duì)列,通過排隊(duì)的方式來控制系統(tǒng)的伸縮性,使負(fù) 載能力可控,能更合理的利用計(jì)算機(jī)的系統(tǒng)資源。4.提出基于狀態(tài)機(jī)模式的任務(wù)執(zhí)行方法,相對(duì)于傳統(tǒng)的通過一個(gè)輪詢線程間隔的 從隊(duì)列獲取任務(wù),由于其不需要輪詢線程,其可靠性和效率都大幅提高。以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技 術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修 改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
一種任務(wù)處理方法,其特征在于,包括步驟102,接收輸入的任務(wù);步驟104,判斷所述任務(wù)是否具有同步屬性,在所述任務(wù)具有同步屬性時(shí),進(jìn)入步驟106,在所述任務(wù)不具有同步屬性時(shí),進(jìn)入步驟110;所述步驟106,根據(jù)所述任務(wù)的同步屬性,在當(dāng)前執(zhí)行任務(wù)中查找所述任務(wù)對(duì)應(yīng)的排他任務(wù);步驟108,在當(dāng)前執(zhí)行任務(wù)中存在所述任務(wù)對(duì)應(yīng)的排他任務(wù)時(shí),不執(zhí)行所述任務(wù),直至所述當(dāng)前執(zhí)行任務(wù)中不存在所述任務(wù)對(duì)應(yīng)的排他任務(wù),所述步驟110,執(zhí)行所述任務(wù)。
2.根據(jù)權(quán)利要求1所述的任務(wù)處理方法,其特征在于,所述步驟108中,在當(dāng)前執(zhí)行任 務(wù)中存在所述任務(wù)對(duì)應(yīng)的排他任務(wù)時(shí),根據(jù)所述任務(wù)的同步屬性,將所述任務(wù)分配至對(duì)應(yīng) 的排他隊(duì)列,在所述當(dāng)前執(zhí)行任務(wù)中不存在所述任務(wù)對(duì)應(yīng)的排他任務(wù)時(shí),從所述任務(wù)對(duì)應(yīng) 的排他隊(duì)列里取出所述任務(wù),以待執(zhí)行。
3.根據(jù)權(quán)利要求2所述的任務(wù)處理方法,其特征在于,排他隊(duì)列中的所有任務(wù)均具有 優(yōu)先級(jí),從所述排他隊(duì)列中取出任務(wù)時(shí),先取出優(yōu)先級(jí)最高的任務(wù)。
4.根據(jù)權(quán)利要求2所述的任務(wù)處理方法,其特征在于,在所述步驟110中,所述任務(wù)通 過線程池提供的線程執(zhí)行。
5.根據(jù)權(quán)利要求4所述的任務(wù)處理方法,其特征在于,在所述步驟110中,所述當(dāng)前執(zhí) 行任務(wù)占用所述線程池的所有線程時(shí),使所述任務(wù)進(jìn)入等待狀態(tài),直至所述線程池中存在 空余線程,使用所述空余線程執(zhí)行所述任務(wù)。
6.根據(jù)權(quán)利要求5所述的任務(wù)處理方法,其特征在于,處于所述等待狀態(tài)的所有任務(wù) 均具有優(yōu)先級(jí),在所述線程池里僅出現(xiàn)一個(gè)空余線程時(shí),將所述一個(gè)空余線程用于執(zhí)行優(yōu) 先級(jí)最高的任務(wù)。
7.根據(jù)權(quán)利要求2至6中任一項(xiàng)所述的任務(wù)處理方法,其特征在于,所述步驟108中, 所述任務(wù)具有多個(gè)同步屬性,以及在當(dāng)前執(zhí)行任務(wù)中存在對(duì)應(yīng)任務(wù)的不同同步屬性的多個(gè) 排他任務(wù),根據(jù)所述不同同步屬性的優(yōu)先程度,將所述任務(wù)分配至優(yōu)先程度最高的同步屬 性對(duì)應(yīng)的排他隊(duì)列,排他隊(duì)列包括全局排他隊(duì)列,所述全局排他隊(duì)列中的任務(wù)只能單獨(dú)執(zhí)行;類別排他隊(duì)列,所述類別排他隊(duì)列中的任務(wù)不能與所述類別排他隊(duì)列對(duì)應(yīng)類型的任務(wù) 同時(shí)執(zhí)行。
8.一種任務(wù)處理裝置,其特征在于,包括調(diào)度模塊,判斷輸入的任務(wù)是否具有同步屬性,在所述任務(wù)具有同步屬性時(shí),將所述 任務(wù)提交至同步控制模塊,在所述任務(wù)不具有同步屬性時(shí),將所述任務(wù)提交至任務(wù)執(zhí)行模 塊;所述同步控制模塊,根據(jù)所述任務(wù)的同步屬性,在當(dāng)前執(zhí)行任務(wù)中查找所述任務(wù)對(duì)應(yīng) 的排他任務(wù),并在所述當(dāng)前執(zhí)行任務(wù)中不存在所述任務(wù)對(duì)應(yīng)的排他任務(wù)時(shí),將所述任務(wù)通 過所述調(diào)度模塊提交至所述任務(wù)執(zhí)行模塊;所述任務(wù)執(zhí)行模塊,執(zhí)行所述任務(wù)。
9.根據(jù)權(quán)利要求8所述的任務(wù)處理裝置,其特征在于,還包括同步隊(duì)列模塊,提供排他隊(duì)列,所述同步控制模塊在當(dāng)前執(zhí)行任務(wù)中存在所述任務(wù)對(duì) 應(yīng)的排他任務(wù)時(shí),根據(jù)所述任務(wù)的同步屬性,通過所述同步隊(duì)列模塊將所述任務(wù)分配至對(duì) 應(yīng)的排他隊(duì)列,在所述當(dāng)前執(zhí)行任務(wù)中不存在所述任務(wù)對(duì)應(yīng)的排他任務(wù)時(shí),通過所述同步 隊(duì)列模塊從所述任務(wù)對(duì)應(yīng)的排他隊(duì)列里取出所述任務(wù),由所述調(diào)度模塊將所述任務(wù)提交至 所述任務(wù)執(zhí)行模塊,以待執(zhí)行。
10.根據(jù)權(quán)利要求9所述的任務(wù)處理裝置,其特征在于,所述同步隊(duì)列模塊還供用戶制 定不同類型的排他隊(duì)列。
全文摘要
本發(fā)明提供了一種任務(wù)處理方法,包括步驟102,接收輸入的任務(wù);步驟104,判斷任務(wù)是否具有同步屬性,在任務(wù)具有同步屬性時(shí),進(jìn)入步驟106,在任務(wù)不具有同步屬性時(shí),進(jìn)入步驟110;步驟106,根據(jù)任務(wù)的同步屬性,在當(dāng)前執(zhí)行任務(wù)中查找任務(wù)對(duì)應(yīng)的排他任務(wù);步驟108,在當(dāng)前執(zhí)行任務(wù)中存在任務(wù)對(duì)應(yīng)的排他任務(wù)時(shí),不執(zhí)行任務(wù),直至當(dāng)前執(zhí)行任務(wù)中不存在任務(wù)對(duì)應(yīng)的排他任務(wù),步驟110,執(zhí)行任務(wù)。本發(fā)明還提供了一種任務(wù)處理裝置。根據(jù)本發(fā)明的技術(shù)方案,將具有約束關(guān)系的任務(wù)進(jìn)行同步排隊(duì),避免了任務(wù)之間的競爭,然后利用優(yōu)先級(jí)調(diào)節(jié)隊(duì)列中任務(wù)的執(zhí)行滯后性,同時(shí)通過等待隊(duì)列和設(shè)置任務(wù)數(shù)可同時(shí)執(zhí)行任務(wù)的最大數(shù)目,使負(fù)載能力可控,具有良好的系統(tǒng)伸縮性。
文檔編號(hào)G06F9/52GK101963922SQ20101029985
公開日2011年2月2日 申請(qǐng)日期2010年9月29日 優(yōu)先權(quán)日2010年9月29日
發(fā)明者王昊沙 申請(qǐng)人:用友軟件股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1