週期性任務執行實現模板執行緒類

2021-07-15 23:13:51 字數 1959 閱讀 5826

週期性任務執行實現模板執行緒類,是滿足在開發過程中需要定時並週期性去執行相同任務的控制。

1.為什麼要寫這個執行緒類?

這其實跟我著手的工作主要是控制儀器的動作執行和狀態返回,需要定時週期性執行相行的任務或查詢儀器的各類狀態。

2. 如何保證乙個任務週期性並穩定的執行對儀器的多執行緒控制很重要,下面以的封裝好的週期性任務執行執行緒類**來作說明。

namespace
}

public timingperiod timingperiod

}public int procperiod

}public bool isactive

}public long elapsedmilliseconds

}public periodicthread(int procperiod)

public void addsignal()

public virtual bool start()

return this.isactive;

}public virtual void stop()

protected virtual bool needtoexit()

protected virtual void realtimework()

protected abstract void periodwork();

protected virtual void enterwork()

protected virtual void exitwork()

protected virtual void proc()

if (needtoexit())

thread.sleep(10);

}exitwork();

this.isactive = false;}}

}

週期性任務通過重寫periodwork(),仔細的使用者應該清楚,你所執行的任務的總的時間必須少於你執行任務的週期。從理論上,裝置控制上的每個裝置大部分是獨佔資源,很少有任務是執行的主體會比任務的週期本身輪詢的時間長的。但如果你是用於其它用途,你需自己權衡如何改造以滿足你自身的需求和應用。

為了實現這個週期任務類拓展性,除了滿足定期執行任務的需求外,增加了5個功能:

1.支援外部需在特殊情況下需馬上去執行任務:  可以呼叫addsignal()來滿足這一要求。

2.支援週期任務啟動的準備工作:重寫enterwork()函式。

3.支援週期任務結束的退出工作:重寫exitwork函式 。

4.支援實時執行任務:重寫realtimework函式。

5.支援額外提前或滿足指定條件退出當重執行的週期任務:重寫needtoexit()。其實這個對外介面比如在控制裝置執行動作中,因發現被控制裝置硬體上錯誤不能繼續執行週期性任務時,需要退出週期任務的執行緒。

也許有人已經發現在這個類中還使用了另乙個類timingperiod,此類是對時間進行計時,類似於定時器功能。下面也將此類的原始碼附上:

namespace
set 

}public long periodelapsedmilliseconds

}public long currentelapsedmilliseconds

}public long lastelapsedmilliseconds

}public timingperiod(int period)

public void reset()

public bool isnewperiod()

return isnewperiod;}}

}

後續的幾篇文章對其應用作了更新和封裝,可以在專欄裡檢視。

如果感覺對你有幫助,請支援肯定下博主的努力!

Linux任務計畫 週期性任務執行

at命令用於在指定時間執行命令。執行結果會通過郵件傳送給使用者 at允許使用一套相當複雜的指定時間的方法。它能夠接受在當天的hh mm 小時 分鐘 式的時間指定。假如該時間已過去,那麼就放在第二天執行 語法at 選項 引數 atq 查詢任務列表 atrm 刪除指定任務選項 f 指定包含具體指令的任務...

Linux任務計畫,週期性任務執行

概述 什麼是計畫任務呢?就像我們每個人日常生活中都會使用到的鬧鐘一樣,按時的去提醒該幹什麼事,以免忘記。同樣,我們在工作中也要每天在特定的時間內安排一些事情,這就是計畫任務。未來的某時間點執行以此任務 at,batch 週期性執行某任務 cron at命令 用法 at option time tim...

Linux任務計畫和週期性任務執行

linux計畫任務有兩類 單一任務at介紹 語法格式 at lfdcq time常用選項 l 檢視作業佇列,相當於atq f 從某個指定檔案檔案中讀取作業任務,不通過互動式輸入。d 刪除指定的作業任務,相當於atrm。c 檢視指定作業具體內容。q queue指明佇列。time時間格式有 hh mm ...