国产精品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ù)的方法和單元的制作方法

      文檔序號:6464451閱讀:136來源:國知局
      專利名稱:一種增刪任務(wù)的方法和單元的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及計算機(jī)領(lǐng)域,尤其涉及一種增刪任務(wù)的方法和單元。
      背景技術(shù)
      任務(wù)調(diào)度機(jī)制是實(shí)時操作系統(tǒng)的一個重要機(jī)制。各個需要運(yùn)行的任務(wù)
      Task組成一任務(wù)鏈表,當(dāng)進(jìn)行任務(wù)調(diào)度時,調(diào)度算法首先實(shí)現(xiàn)優(yōu)先級調(diào)度。 系統(tǒng)按照優(yōu)先級從高到低的順序從就緒任務(wù)鏈表數(shù)組中尋找優(yōu)先級最高的任 務(wù),據(jù)此實(shí)現(xiàn)優(yōu)先級調(diào)度。若此優(yōu)先級下只有一個就緒任務(wù),則此就緒任務(wù) 進(jìn)入運(yùn)行態(tài);若此優(yōu)先級下有多個就緒任務(wù),則需采用輪換調(diào)度算法實(shí)現(xiàn)多 任務(wù)輪流執(zhí)行。
      下面是一個常見的任務(wù)鏈表結(jié)構(gòu)
      typedef struct tag—TSysTaskLink {
      int status; //Task的狀態(tài);
      PFTaskFunc PInit; //在Task被添加時運(yùn)行的程序,比如該Task的初始
      化;
      PFTaskFunc PRun; 〃在Task里真正運(yùn)4亍的程序,當(dāng)各Task進(jìn)行切換后, 都是運(yùn)行每個Task的PRun程序;
      PFTaskFunc PFinalize; 〃當(dāng)Task被刪除時,將運(yùn)行該程序,比如釋放該 task占用的資源;
      struct tag—TSysTaskLink *next; 〃指向后一個Task的Task指針;
      struct tag—TSysTaskLink*previous; 〃指向前一個Task的Task指針;
      } TSysTaskLink, *PTSysTaskLink;
      任務(wù)運(yùn)行起來后,當(dāng)需要添力。Task時,除了要將Task加入鏈表以外,還需要運(yùn)行該Task的初始化程序;而當(dāng)刪除Task時,除了要將Task從鏈表 中刪除外,還要進(jìn)行釋放該Task占用的資源等步驟。由于運(yùn)行初始化程序和 釋放資源需要一定時間,如果在初始化或釋放過程中由于硬件產(chǎn)生中斷,則 初始化或釋放會被打斷;在中斷里添加或刪除Task時,有可能系統(tǒng)的中斷連 續(xù)來多次,造成添加Task或刪除Task的嵌套執(zhí)行,導(dǎo)致同一個Task被多次 添加或刪除,從而使程序報錯,造成系統(tǒng)崩潰。

      發(fā)明內(nèi)容
      本發(fā)明要解決的技術(shù)問題是提供一種增刪任務(wù)的方法和單元,能夠避免 增刪任務(wù)的過程中凈皮打斷,并且避免重復(fù)增刪任務(wù)的情況。
      為了解決上述問題,本發(fā)明提供了一種增刪任務(wù)的方法,包括
      在任務(wù)鏈表中添加任務(wù)"維護(hù)臨時Task鏈表";
      當(dāng)添加任務(wù)Task時,如果任務(wù)已進(jìn)入Task運(yùn)行,則將該Task添加到臨 時Task鏈表里,將該Task的狀態(tài)置為未定狀態(tài)"TASK_PENDING";
      當(dāng)刪除Task時,如果任務(wù)已進(jìn)入Task運(yùn)行,則將該Task從Task鏈表 移動到臨時Task鏈表里,將該Task的狀態(tài)置為刪除狀態(tài)"TASK—DELETE";
      當(dāng)系統(tǒng)運(yùn)行任務(wù)"維護(hù)臨時Task鏈表"時,檢測臨時Task鏈表,將其 中狀態(tài)是未定狀態(tài)的Task移動到Task鏈表里,將其狀態(tài)置為就緒狀態(tài);將 臨時Task鏈表中狀態(tài)是刪除狀態(tài)的Task從臨時Task鏈表里刪除。
      進(jìn)一步的,所述的方法還包括
      如果移動到Task鏈表的Task存在PInit程序則運(yùn)行其PInit程序;如果從 臨時Task鏈表里刪除的Task存在PFinalize程序則運(yùn)行其PFinalize程序;
      當(dāng)滿足以下各條件時本次"維護(hù)臨時Task鏈表"任務(wù)結(jié)束
      臨時Task鏈表中各Task都已被檢測過;
      未定狀態(tài)"TASK_PENDING"的Task都已移動到Task鏈表,刪除狀態(tài) "TASK— DELETE"的Task都已從臨時Task鏈表里刪除;
      移動到Task鏈表的Task中,存在PInit程序的Task的PInit程序已運(yùn)行完畢;從臨時Task鏈表里刪除的Task中,存在PFinalize程序的Task的 PFinalize程序已運(yùn)行完畢。
      進(jìn)一步的,所述的方法還包括
      將未定狀態(tài)的Task從臨時Task鏈表移動到Task鏈表前,先判斷該Task 的PRUN是否為空,如果不為空則將該Task移動到Task鏈表;如果為空則 判斷該Task是否存在PInit程序,存在則運(yùn)行其PInit程序后將其從臨時Task 鏈表刪除,否則直接從臨時Task鏈表刪除。
      進(jìn)一步的,所述的方法還包括
      將任務(wù)"維護(hù)臨時Task鏈表"的優(yōu)先級設(shè)置為次高。
      進(jìn)一步的,所述的方法還包括,如果系統(tǒng)未進(jìn)入Task的運(yùn)行,貝寸
      當(dāng)添加Task時直接將Task添力a進(jìn)Task鏈表,將該Task的狀態(tài)置為就 緒狀態(tài),如果該Task存在PInit程序則運(yùn)行其PInit程序;
      當(dāng)刪除Task時將Task直接從Task鏈表中刪除,如果該Task存在PFinalize 程序則運(yùn)行其PFinalize程序。
      本發(fā)明還提供了一種增刪任務(wù)的單元,包括存儲模塊、任務(wù)運(yùn)行模塊、 任務(wù)添加模塊和任務(wù)刪除模塊;
      所述存儲模塊用于保存Task鏈表和臨時Task鏈表;所述Task鏈表中包 括任務(wù)"維護(hù)臨時Task鏈表";
      所述任務(wù)添加模塊用于當(dāng)添加Task時,判斷任務(wù)運(yùn)行模塊是否已進(jìn)入 Task運(yùn)行,如果是則將該Task添加到臨時Task鏈表里,將該Task的狀態(tài)置 為未定狀態(tài);
      所述任務(wù)刪除;f莫塊用于當(dāng)刪除Task時,判斷任務(wù)運(yùn)行模塊是否已進(jìn)入 Task運(yùn)行,如果是則將該Task從Task鏈表移動到臨時Task鏈表里,將該 Task的狀態(tài)置為刪除狀態(tài);
      所述任務(wù)運(yùn)行模塊用于根據(jù)Task鏈表的次序切換任務(wù),對于狀態(tài)為就緒 狀態(tài)的Task,執(zhí)行其PRun;當(dāng)運(yùn)行任務(wù)"維護(hù)臨時Task鏈表"時,檢測臨時Task鏈表,將其中狀態(tài)是未定狀態(tài)的Task移動到Task鏈表里,將該Task 的狀態(tài)置為就緒狀態(tài);將臨時Task鏈表中狀態(tài)是刪除狀態(tài)的Task從臨時Task 鏈表里刪除。
      進(jìn)一步的,所迷任務(wù)運(yùn)行模塊還用于當(dāng)移動到Task鏈表的Task存在PInit 程序時運(yùn)行其PInit程序;當(dāng)從臨時Task鏈表里刪除的Task存在PFinalize程 序時運(yùn)行其PFinalize程序;
      所述任務(wù)運(yùn)行模塊還用于當(dāng)判斷以下各條件都滿足時,結(jié)束本次的"維 護(hù)臨時Task鏈表"任務(wù)
      臨時Task鏈表中各Task都已被檢測過;
      未定狀態(tài)"TASK—PENDING"的Task都已移動到Task鏈表,刪除狀態(tài) "TASK— DELETE"的Task都已從臨時Task鏈表里刪除;
      移動到Task鏈表的Task中,存在PInit程序的Task的PInit程序已運(yùn)行 完畢;從臨時Task鏈表里刪除的Task中,存在PFinalize程序的Task的 PFinalize程序已運(yùn)行完畢。
      進(jìn)一步的,所述任務(wù)運(yùn)行4莫塊將未定狀態(tài)"TASK—PENDING"的Task 從臨時Task鏈表移動到Task鏈表前,先判斷該Task的PRUN是否為空,如 果不為空則將該Task移動到Task鏈表;如果為空則判斷該Task是否存在PInit 程序,存在則運(yùn)行其PInit程序后將其從臨時Task鏈表刪除,否則直接從臨 時Task鏈表刪除。
      進(jìn)一步的,將任務(wù)"維護(hù)臨時Task鏈表"的優(yōu)先級設(shè)置為次高。
      進(jìn)一步的,所述任務(wù)添加才莫塊還用于當(dāng)添加Task時,如果判斷系統(tǒng)未進(jìn) 入Task的運(yùn)行,則直接將Task添加進(jìn)Task鏈表,將該Task的狀態(tài)置為就 緒狀態(tài)"TASK—READY",如果該Task存在PInit程序則運(yùn)行其PInit程序;
      所述任務(wù)刪除才莫塊還用于當(dāng)刪除Task時,如果判斷系統(tǒng)未進(jìn)入Task的 運(yùn)行,則將Task直接從Task鏈表中刪除,如果該Task存在PFinalize程序則 運(yùn)行其PFinalize程序。
      本發(fā)明的技術(shù)方案將任務(wù)運(yùn)行時的增刪任務(wù)分兩步完成,其中比較耗時的第二步在特定任務(wù)運(yùn)行時來完成,因此解決了在多任務(wù)情況下,添加刪除
      Task時受限制的情況,并且解決了系統(tǒng)由于中斷的頻繁產(chǎn)生造成添加或刪除 Task導(dǎo)致的系統(tǒng)錯誤。本發(fā)明的優(yōu)化方案提出為特定任務(wù)設(shè)置優(yōu)先級,因此 可以控制增刪任務(wù)第二步的完成時機(jī),更加靈活。


      圖1為本發(fā)明提供的增刪任務(wù)的單元的具體實(shí)施框圖; 圖2為本發(fā)明應(yīng)用實(shí)例一的流程圖; 圖3為本發(fā)明應(yīng)用實(shí)例二的流程圖。
      具體實(shí)施例方式
      下面將結(jié)合附圖及實(shí)施例對本發(fā)明的技術(shù)方案進(jìn)行更詳細(xì)的說明。
      本發(fā)明的核心思想是增加一臨時Task鏈表,并在系統(tǒng)中增加一個任務(wù) "維護(hù)臨時Task鏈表,,,該任務(wù)不可以:故中斷;從而4吏Task可以在中斷里 或在Task里進(jìn)行動態(tài)添加和刪除,避免了增刪任務(wù)的過程中^L打斷,并且避 免重復(fù)增刪任務(wù)的情況。
      在本發(fā)明中,任務(wù)有如下三種狀態(tài)
      TASK_READY = 0〃就緒狀態(tài),當(dāng)系統(tǒng)檢測到該Task是就緒狀態(tài)時,將 運(yùn)行該Task的PRun;
      TASK—PENDING =1〃未定狀態(tài),是Task沒有被添加到"Task鏈表,,, 在"臨時Task鏈表"里的狀態(tài);
      TASK—DELETE=2 //刪除狀態(tài)。
      本發(fā)明提供的增刪任務(wù)的方法包括 在任務(wù)鏈表中添加任務(wù)"維護(hù)臨時Task鏈表";
      當(dāng)添加Task時,如果任務(wù)已進(jìn)入Task運(yùn)行,則將該Task添加到臨時Task 鏈表里,將該Task的狀態(tài)置為未定狀態(tài)"TASK—PENDING";當(dāng)刪除Task時,如果任務(wù)已進(jìn)入Task運(yùn)行,則將該Task從Task鏈表 移動到臨時Task鏈表里,將該Task的狀態(tài)置為刪除狀態(tài)"TASK—DELETE";
      當(dāng)系統(tǒng)運(yùn)行任務(wù)"維護(hù)臨時Task鏈表,,時,檢測臨時Task鏈表,將其 中狀態(tài)是未定狀態(tài)"TASK—PENDING"的Task移動到Task鏈表里,將其狀 態(tài)置為就緒狀態(tài)"TASK—READY";將臨時Task鏈表中狀態(tài)是刪除狀態(tài) "TASK—DELETE"的Task從臨時Task鏈表里刪除。
      本方法還包括:如果移動到Task鏈表的Task存在PInit程序則運(yùn)行其PInit 程序;如果從臨時Task鏈表里刪除的Task存在PFinalize程序則運(yùn)行其 PFinalize程序。
      其中,將Task從臨時Task鏈表移動到Task鏈表時,可以是先將該Task 添加到Task鏈表,然后將其從臨時Task鏈表中刪除,再運(yùn)行該Task的Pinit 程序;也可以是先將該Task添加到Task鏈表,然后運(yùn)行該Task的Pinit程序, 再將其從臨時Task鏈表中刪除。
      其中,將未定狀態(tài)"TASK—PENDING"的Task從臨時Task鏈表移動到 Task鏈表前,先判斷該Task的PRUN是否為空,如果不為空則將該Task移 動到Task鏈表;如果為空則判斷該Task是否存在Pinit程序,存在則運(yùn)行其 Pinit程序后將其從臨時Task鏈表刪除,否則直接從臨時Task鏈表刪除。
      本方法還包括當(dāng)滿足以下各條件時本次"維護(hù)臨時Task鏈表,,任務(wù)結(jié)

      臨時Task鏈表中各Task都已被檢測過;
      未定狀態(tài)"TASK—PENDING"的Task都已移動到Task鏈表,刪除狀態(tài) "TASK_ DELETE"的Task都已從臨時Task鏈表里刪除;
      移動到Task鏈表的Task中,存在Pinit程序的Task的Pinit程序已運(yùn)行 完畢;從臨時Task鏈表里刪除的Task中,存在PFinalize程序的Task的 PFinalize程序已運(yùn)行完畢。
      本方法還可以包括根據(jù)4壬務(wù)"維護(hù)臨時Task鏈表"在Task鏈表里所 有任務(wù)中的重要性設(shè)置其優(yōu)先級;通??梢詫⑵鋬?yōu)先級設(shè)置為次高;實(shí)際應(yīng) 用中,如果系統(tǒng)中除了最高優(yōu)先級的Task外,還有Task比"維護(hù)臨時Task鏈表,,重要或需要先運(yùn)行,則可以將"維護(hù)臨時Task鏈表,,的優(yōu)先級調(diào)低; 如果系統(tǒng)中"維護(hù)臨時Task鏈表"是最重要或需要最先運(yùn)行的,則將其優(yōu)先 級調(diào)為最高;也就是說,可以靈活配置"維護(hù)臨時Task鏈表,,的優(yōu)先級以滿 足不同系統(tǒng)的需求。
      本方法還可以包括,如果系統(tǒng)未進(jìn)入Task的運(yùn)行,貝'J:
      當(dāng)添加Task時直接將Task添加進(jìn)Task鏈表,將該Task的狀態(tài)置為就 緒狀態(tài)"TASK_READY",如果該Task存在PInit程序則運(yùn)行其PInit程序;
      當(dāng)刪除Task時將Task直接從Task鏈表中刪除,如果該Task存在PFinalize 程序則運(yùn)行其PFinalize程序。
      其中,將Task添加到Task鏈表前,先判斷該Task的PRUN是否為空, 如果不為空則將該Task添加到Task鏈表;如果為空則不添加。
      本方法還可以包括系統(tǒng)根據(jù)Task鏈表的次序切換,當(dāng)切換到每個具體 的Task運(yùn)行時,先4企測該Task的狀態(tài),當(dāng)Task的狀態(tài)是"TASK_READY" 時,該Task的PRun就被運(yùn)行;否則不運(yùn)行該Task的PRun程序。
      本發(fā)明提供的增刪任務(wù)的單元如圖1所示,包括存儲模塊、任務(wù)運(yùn)行 模塊、任務(wù)添加模塊和任務(wù)刪除模塊;
      所迷存儲模塊用于保存Task鏈表和臨時Task鏈表;所述Task鏈表中包 括任務(wù)"維護(hù)臨時Task鏈表";
      所述任務(wù)添加模塊用于當(dāng)添加Task時,判斷任務(wù)運(yùn)行模塊是否已進(jìn)入 Task運(yùn)行,如果是則將該Task添加到臨時Task鏈表里,將該Task的狀態(tài)置 為"TASKPENDING";
      所述任務(wù)刪除模塊用于當(dāng)刪除Task時,判斷任務(wù)運(yùn)行模塊是否已進(jìn)入 Task運(yùn)行,如果是則將該Task從Task鏈表移動到臨時Task鏈表里,將該 Task的狀態(tài)置為"TASK—DELETE";
      所迷任務(wù)運(yùn)行模塊用于根據(jù)Task鏈表的次序切換任務(wù),對于狀態(tài)為 "TASK一READY"的Task,執(zhí)行其PRun;當(dāng)運(yùn)行任務(wù)"維護(hù)臨時Task鏈表" 時,檢測臨時Task鏈表,將其中狀態(tài)是"TASK—PENDING"的Task移動到Task鏈表里,將該Task的狀態(tài)置為"TASK—READY";將臨時Task鏈表中 狀態(tài)是"TASK—DELETE"的Task從臨時Task鏈表里刪除。
      所述任務(wù)添加才莫塊、任務(wù)刪除模塊判斷任務(wù)運(yùn)行模塊是否已進(jìn)入Task運(yùn) 行可以但不限于是指增刪任務(wù)的單元還包括狀態(tài)寄存器,包括表示"運(yùn)行" 和"未運(yùn)行"的值;初始值為表示"未運(yùn)行,,的值;當(dāng)任務(wù)運(yùn)行模塊進(jìn)入Task 運(yùn)行時將該寄存器置為表示"運(yùn)行,,的值,結(jié)束Task運(yùn)行時將該寄存器置為 表示"未運(yùn)行,,的值。當(dāng)然也可以用其它方式來判斷任務(wù)運(yùn)行模塊是否已進(jìn) 入Task運(yùn)行,比如發(fā)送詢問信息給任務(wù)運(yùn)行模塊,任務(wù)運(yùn)行模塊返回指示是 否已進(jìn)入Task運(yùn)行的反饋信息;再比如任務(wù)運(yùn)行沖莫塊進(jìn)^/結(jié)束Task運(yùn)行時 主動通知任務(wù)添加模塊、任務(wù)刪除模塊等。
      所述任務(wù)運(yùn)行才莫塊還用于當(dāng)移動到Task鏈表的Task存在PInit程序時 運(yùn)行其PInit程序;當(dāng)從臨時Task鏈表里刪除的Task存在PFinalize程序時運(yùn) 行其PFinalize程序。
      其中,所述任務(wù)運(yùn)行模塊將Task從臨時Task鏈表移動到Task鏈表時, 可以是先將該Task添加到Task鏈表,然后將其從臨時Task鏈表中刪除,再 運(yùn)行該Task的Pinit程序;也可以是先將該Task添加到Task鏈表,然后運(yùn)行 該Task的Pinit程序,再將其從臨時Task嗜連表中刪除。
      其中,所述任務(wù)運(yùn)行模塊將未定狀態(tài)"TASK_PENDING"的Task從臨 時Task鏈表移動到Task鏈表前,先判斷該Task的PRUN是否為空,如果不 為空則將該Task移動到Task鏈表;如果為空則判斷該Task是否存在PInit 程序,存在則運(yùn)行其PInit程序后將其從臨時Task鏈表刪除,否則直接從臨 時Task鏈表刪除。
      所述任務(wù)運(yùn)行^^莫塊還用于當(dāng)判斷以下各條件都滿足時,結(jié)束本次的"維 護(hù)臨時Task鏈表"任務(wù)
      臨時Task鏈表中各Task都已被檢測過;
      未定狀態(tài)"TASK—PENDING"的Task都已移動到Task鏈表,刪除狀態(tài) "TASK— DELETE"的Task都已從臨時Task鏈表里刪除;
      移動到Task鏈表的Task中,存在PInit程序的Task的PInit程序已運(yùn)行完畢;從臨時Task鏈表里刪除的Task中,存在PFinalize程序的Task的 PFinalize程序已運(yùn)行完畢。
      其中,根據(jù)任務(wù)"維護(hù)臨時Task鏈表,,在Task鏈表里所有任務(wù)中的重 要性設(shè)置其優(yōu)先級;通??梢詫⑵鋬?yōu)先級設(shè)置為次高;實(shí)際應(yīng)用中,如果系 統(tǒng)中除了最高優(yōu)先級的Task外,還有Task比"維護(hù)臨時Task鏈表"重要或 需要先運(yùn)行,則可以將"維護(hù)臨時Task鏈表,,的優(yōu)先級調(diào)低;如果系統(tǒng)中"維 護(hù)臨時Task鏈表"是最重要或需要最先運(yùn)行的,則將其優(yōu)先級調(diào)為最高;也 就是說,可以靈活配置"維護(hù)臨時Task鏈表"的優(yōu)先級以滿足不同系統(tǒng)的需 求。
      所述任務(wù)添加才莫塊還用于當(dāng)添加Task時,如果判斷系統(tǒng)未進(jìn)入Task的 運(yùn)行,則直接將Task添加進(jìn)Task鏈表,將該Task的狀態(tài)置為就緒狀態(tài) "TASK—READY",如果該Task存在PInit程序則運(yùn)行其PInit程序;
      所述任務(wù)刪除才莫塊還用于當(dāng)刪除Task時,如果判斷系統(tǒng)未進(jìn)入Task的 運(yùn)行,則將Task直接從Task鏈表中刪除,如果該Task存在PFinalize程序則 運(yùn)4亍其PFinalize程序。
      其中,所述任務(wù)添加模塊將Task添加到Task鏈表前,先判斷該Task的 PRUN是否為空,如果不為空則將該Task添加到Task鏈表;如果為空則不 添力口。
      下面用兩個應(yīng)用實(shí)例進(jìn)一 步說明本發(fā)明。 應(yīng)用實(shí)例一為添加任務(wù)的整個流程,如圖2所示,包括
      201、 首先判斷系統(tǒng)是否已進(jìn)入Task的運(yùn)行,如果是則進(jìn)行步驟202,否 則進(jìn)4于步驟204;
      202、 將要添加的Task添加進(jìn)臨時Task鏈表,將其狀態(tài)置為未定狀態(tài);
      203、 當(dāng)任務(wù)"維護(hù)臨時Task鏈表"運(yùn)行時,找到臨時Task鏈表中狀態(tài) 為未定狀態(tài)的任務(wù);
      204、 判斷該任務(wù)的PRUN程序是否為空,如果為空則進(jìn)行步驟206,如 果不為空則進(jìn)行步驟205;205、 將Task添加進(jìn)Task鏈表,將其狀態(tài)置為就緒狀態(tài);
      206、 判斷添加進(jìn)Task鏈表的Task的PInit程序是否為空,如果為空則 進(jìn)行步驟208 ,否則進(jìn)行步驟207;
      207、 運(yùn)行PInit程序;
      如果Task原先在臨時Task鏈表中,則從步驟203后到步驟208前的任 一步從臨時刪除Task鏈表中刪除該Task;
      208、 Task添加完成。
      應(yīng)用實(shí)例二為刪除任務(wù)的流程,如圖3所示,包括
      301、 首先判斷系統(tǒng)是否已進(jìn)入Task的運(yùn)行,如果是則進(jìn)行步驟302,否 則進(jìn)行步驟304;
      302、 將要刪除的Task移動到臨時Task鏈表,將其狀態(tài)置為刪除狀態(tài);
      303、 當(dāng)任務(wù)"維護(hù)臨時Task鏈表"運(yùn)行時,找到臨時Task鏈表中狀態(tài) 為刪除狀態(tài)的任務(wù);
      304 、將Task從Task鏈表中刪除;
      305、 判斷刪除的Task的PFinalize程序是否為空,如果為空則進(jìn)行步驟 307,否則進(jìn)行步驟306;
      306、 運(yùn)行PFinalize程序;
      步驟304可以在步驟305、 306后進(jìn)行,也可以并4?。?br> 307、 Task刪除完成。
      當(dāng)然,本發(fā)明還可有其他多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的 情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形, 但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明的權(quán)利要求的保護(hù)范圍。
      權(quán)利要求
      1、一種增刪任務(wù)的方法,包括在任務(wù)鏈表中添加任務(wù)“維護(hù)臨時Task鏈表”;當(dāng)添加任務(wù)Task時,如果任務(wù)已進(jìn)入Task運(yùn)行,則將該Task添加到臨時Task鏈表里,將該Task的狀態(tài)置為未定狀態(tài)“TASK_PENDING”;當(dāng)刪除Task時,如果任務(wù)已進(jìn)入Task運(yùn)行,則將該Task從Task鏈表移動到臨時Task鏈表里,將該Task的狀態(tài)置為刪除狀態(tài)“TASK_DELETE”;當(dāng)系統(tǒng)運(yùn)行任務(wù)“維護(hù)臨時Task鏈表”時,檢測臨時Task鏈表,將其中狀態(tài)是未定狀態(tài)的Task移動到Task鏈表里,將其狀態(tài)置為就緒狀態(tài);將臨時Task鏈表中狀態(tài)是刪除狀態(tài)的Task從臨時Task鏈表里刪除。
      2、 如權(quán)利要求1所述的方法,其特征在于,還包括如果移動到Task鏈表的Task存在PInit程序則運(yùn)行其PInit程序;如果從當(dāng)滿足以下各條件時本次"維護(hù)臨時Task鏈表"任務(wù)結(jié)束 臨時Task鏈表中各Task都已被檢測過;未定狀態(tài)"TASK_PENDING"的Task都已移動到Task鏈表,刪除狀態(tài) "TASK— DELETE"的Task都已從臨時Task鏈表里刪除;移動到Task鏈表的Task中,存在PInit程序的Task的PInit程序已運(yùn)行 完畢;從臨時Task鏈表里刪除的Task中,存在PFinalize程序的Task的 PFinalize程序已運(yùn)行完畢。
      3、 如權(quán)利要求l所述的方法,其特征在于,還包括將未定狀態(tài)的Task從臨時Task鏈表移動到Task鏈表前,先判斷該Task 的PRUN是否為空,如果不為空則將該Task移動到Task鏈表;如果為空則 判斷該Task是否存在PInit程序,存在則運(yùn)行其PInit程序后將其從臨時Task 鏈表刪除,否則直接從臨時Task鏈表刪除。
      4、 如權(quán)利要求1到3中任一項(xiàng)所述的方法,其特征在于,還包括將任務(wù)"維護(hù)臨時Task鏈表"的優(yōu)先級設(shè)置為次高。
      5、 如權(quán)利要求1到3中任一項(xiàng)所述的方法,其特征在于,還包括,如果 系統(tǒng)未進(jìn)入Task的運(yùn)行,貝'J:當(dāng)添加Task時直接將Task添加進(jìn)Task鏈表,將該Task的狀態(tài)置為就 緒狀態(tài),如果該Task存在PInit程序則運(yùn)行其PInit程序;當(dāng)刪除Task時將Task直接從Task鏈表中刪除,如果該Task存在PFinalize 程序則運(yùn)行其PFinalize程序。
      6、 一種增刪任務(wù)的單元,其特征在于,包括存儲才莫塊、任務(wù)運(yùn)行模塊、 任務(wù)添加模塊和任務(wù)刪除模塊;所述存儲才莫塊用于保存Task鏈表和臨時Task鏈表;所述Task鏈表中包 括任務(wù)"維護(hù)臨時Task鏈表";所述任務(wù)添加斗莫塊用于當(dāng)添加Task時,判斷任務(wù)運(yùn)行模塊是否已進(jìn)入 Task運(yùn)行,如果是則將該Task添加到臨時Task鏈表里,將該Task的狀態(tài)置 為未定狀態(tài);所述任務(wù)刪除模塊用于當(dāng)刪除Task時,判斷任務(wù)運(yùn)行模塊是否已進(jìn)入 Task運(yùn)行,如果是則將該Task從Task鏈表移動到臨時Task鏈表里,將該 Task的狀態(tài)置為刪除狀態(tài);所述任務(wù)運(yùn)行才莫塊用于根據(jù)Task鏈表的次序切換任務(wù),對于狀態(tài)為就緒 狀態(tài)的Task,執(zhí)行其PRun;當(dāng)運(yùn)行任務(wù)"維護(hù)臨時Task鏈表"時,檢測臨 時Task鏈表,將其中狀態(tài)是未定狀態(tài)的Task移動到Task鏈表里,將該Task 的狀態(tài)置為就緒狀態(tài);將臨時Task鏈表中狀態(tài)是刪除狀態(tài)的Task從臨時Task 鏈表里刪除。
      7、 如權(quán)利要求6所述的單元,其特征在于所述任務(wù)運(yùn)行模塊還用于當(dāng)移動到Task鏈表的Task存在PInit程序時運(yùn) 行其PInit程序;當(dāng)從臨時Task鏈表里刪除的Task存在PFinalize程序時運(yùn)行 其PFinalize程序;所述任務(wù)運(yùn)行模塊還用于當(dāng)判斷以下各條件都滿足時,結(jié)束本次的"維護(hù)臨時Task鏈表"任務(wù)臨時Task鏈表中各Task都已被檢測過; 未定狀態(tài)"TASK—PENDING"的Task都已移動到Task鏈表,刪除狀態(tài) "TASK_ DELETE"的Task都已從臨時Task鏈表里刪除;移動到Task鏈表的Task中,存在PInit程序的Task的PInit程序已運(yùn)行 完畢;從臨時Task鏈表里刪除的Task中,存在PFinalize程序的Task的 PFinalize程序已運(yùn)行完畢。
      8、 如權(quán)利要求6所述的單元,其特征在于所述任務(wù)運(yùn)行才莫塊將未定狀態(tài)"TASK_PENDING"的Task從臨時Task 鏈表移動到Task鏈表前,先判斷該Task的PRUN是否為空,如果不為空則 將該Task移動到Task鏈表;如果為空則判斷該Task是否存在PInit程序,存 在則運(yùn)行其PInit程序后將其從臨時Task鏈表刪除,否則直接從臨時Task鏈 表刪除。
      9、 如權(quán)利要求6到8中任一項(xiàng)所述的單元,其特征在于 將任務(wù)"維護(hù)臨時Task鏈表"的優(yōu)先級設(shè)置為次高。
      10、 如權(quán)利要求6到8中任一項(xiàng)所述的單元,其特征在于所述任務(wù)添加才莫塊還用于當(dāng)添加Task時,如果判斷系統(tǒng)未進(jìn)入Task的 運(yùn)行,則直接將Task添加進(jìn)Task鏈表,將該Task的狀態(tài)置為就緒狀態(tài) "TASK_READY",如果該Task存在PInit程序則運(yùn)行其PInit程序;所述4壬務(wù)刪除才莫塊還用于當(dāng)刪除Task時,如果判斷系統(tǒng)未進(jìn)入Task的 運(yùn)行,則將Task直接從Task鏈表中刪除,如果該Task存在PFinalize程序則 運(yùn)行其PFinalize程序。
      全文摘要
      本發(fā)明公開了一種增刪任務(wù)的方法和單元,方法包括在任務(wù)鏈表中添加任務(wù)“維護(hù)臨時Task鏈表”;當(dāng)添加任務(wù)Task時,如果任務(wù)已進(jìn)入Task運(yùn)行,則將該Task添加到臨時Task鏈表里,將該Task的狀態(tài)置為未定狀態(tài);當(dāng)刪除Task時,如果任務(wù)已進(jìn)入Task運(yùn)行,則將該Task從Task鏈表移動到臨時Task鏈表里,將該Task的狀態(tài)置為刪除狀態(tài);當(dāng)系統(tǒng)運(yùn)行任務(wù)“維護(hù)臨時Task鏈表”時,檢測臨時Task鏈表,將其中狀態(tài)是未定狀態(tài)的Task移動到Task鏈表里,將其狀態(tài)置為就緒狀態(tài);將臨時Task鏈表中狀態(tài)是刪除狀態(tài)的Task從臨時Task鏈表里刪除。本發(fā)明能避免重復(fù)增刪任務(wù)的情況。
      文檔編號G06F9/48GK101299197SQ20081011589
      公開日2008年11月5日 申請日期2008年6月30日 優(yōu)先權(quán)日2008年6月30日
      發(fā)明者馮備戰(zhàn) 申請人:北京中星微電子有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1