來某廠接近半年了,幾乎沒寫過C++代碼,說實話還真的有點手生。最近剛好有一個需求,然而我感覺我也沒有辦法用C++以外的語言去實現它。于是還是花了幾天時間用C++完成編碼,這是一個簡單的任務執(zhí)行引擎,它被我稱作panguan。寫這 篇文章主要記錄一下開發(fā)過程中的一些思路和想法。不足之處,勞煩大家給予指出。
1.寫在前面
1.1需求來源
最近有一個需求,假設我們有很多任務需要定時執(zhí)行甚至定時重復運行,并且其中有一些任務之間可能存在控制依賴和/或數據依賴,甚至我們希望可以利用一些原子任務去組成一個更大的任務。
所以我們需要有一個工具可以將這些任務管理起來:1)解決依賴問題;2)將能并發(fā)的任務最大化地并發(fā)起來;3)使用簡單,只需填寫配置文件,不需要寫任何代碼即可讓一堆任務有序地Run起來;4)能夠正確調度這些任務的順序;5)may be more。
我調研了一些已經存在的任務執(zhí)行引擎,包括FStack。然而試用了一下FStack,發(fā)現我不會用,這就很尷尬了。
報著“殺雞焉用牛刀”的想法,于是最終花了幾天自己寫了一個可實際運行的工具,即panguan(判官)。
1.2名字來源
這個任務執(zhí)行引擎被命名為“判官”,就是想給人一種不明覺厲的裝X氣質。
據百度百科記載,傳說中陰曹地府中的判官判處人的輪回生死,對壞人進行懲罰,對好人進行獎勵。而該任務執(zhí)行引擎的主要工作是調度任務的順序和生存周期,對執(zhí)行成功和失敗的任務進行處理。感覺這個名字很有這個場景的氣質,于是配置任務屬性的