grapeTimer時(shí)間調(diào)度器
grapeTimer 時(shí)間調(diào)度器
一款粗粒度的時(shí)間調(diào)度器,可以幫你通過(guò)一些字符串快速并簡(jiǎn)單的創(chuàng)建時(shí)間任務(wù)。
用于游戲服務(wù)端的優(yōu)化設(shè)計(jì),大量并行的時(shí)間調(diào)度方式。
簡(jiǎn)單介紹:
-
通過(guò)命令格式創(chuàng)建
time.Time -
簡(jiǎn)潔的Api格式,輕度且可拆分的函數(shù)庫(kù)
-
快速創(chuàng)建調(diào)度器
-
可控的調(diào)度器時(shí)間粒度
-
高性能的并發(fā)調(diào)度
-
時(shí)間周期,次數(shù)多模式可控
[支持每天,每周,每月] -
*可選擇對(duì)調(diào)度器保存或內(nèi)存執(zhí)行[待實(shí)現(xiàn)]
-
*生成可保存的調(diào)度器字符串并反向分析他生成調(diào)度器[待實(shí)現(xiàn)]
-
不依賴第三方庫(kù)
安裝方法
go get -u -v github.com/koangel/grapeTimer
基本用法
// 初始化一個(gè)1秒鐘粒度的調(diào)度器,ars代表是否自動(dòng)設(shè)置運(yùn)行為并行模式
grapeTimer.InitGrapeScheduler(1*time.Second, true)
// 啟動(dòng)一個(gè)單次執(zhí)行的調(diào)度器,1秒時(shí)間,基本tick單位為毫秒
Id := grapeTimer.NewTickerOnce(1000, exec100, nil)
// 啟動(dòng)一個(gè)1秒為周期的 循環(huán)timer
Id = grapeTimer.NewTickerLoop(1000, exec100Loop, nil)
// 啟動(dòng)一個(gè)每日規(guī)則的定時(shí)器,參數(shù)為args data
Id = grapeTimer.NewTimeDataOnce("Day 13:59:59", exeDayTime, "args data")
// 啟動(dòng)一個(gè)每日循環(huán)規(guī)則的定時(shí)器,參數(shù)為args data
Id = grapeTimer.NewTimeDataLoop("Day 13:59:59", exeDayTime, "args data")
所有執(zhí)行函數(shù)請(qǐng)保持以下函數(shù)格式:
func exec100(args interface{}) {
fmt.Printf("exec100")
}
func exec100Loop(args interface{}) {
fmt.Printf("exec100Loop")
}
func exeDayTime(args interface{}) {
}
停止計(jì)時(shí)器
// 將自動(dòng)返回的ID作為參數(shù)傳入可停止持續(xù)循環(huán)的TIMER grapeTimer.StopTimer(Id)
參數(shù)設(shè)置
// 設(shè)置啟用日志調(diào)試模式,建議正式版本關(guān)閉他 grapeTimer.CDebugMode = true // 調(diào)用分析器使用的時(shí)區(qū),可以個(gè)根據(jù)不同國(guó)家地區(qū)設(shè)置 grapeTimer.LocationFormat = "Asia/Shanghai" // 開啟異步調(diào)度模式,在此模式下 timer執(zhí)行時(shí)會(huì)建立一個(gè)go,不會(huì)阻塞其他timer執(zhí)行調(diào)度,建議開啟 grapeTimer.UseAsyncExec = true
保存調(diào)度器
待添加
生成調(diào)度器字符串
待添加
可用格式說(shuō)明
調(diào)度器有輕度的日期模式分析體系,可提供每日,每周,每月的時(shí)間日期生成方式,具體格式如下:
| 關(guān)鍵字 | 格式 | 說(shuō)明 |
|---|---|---|
| Day | Day 00:00:00 | 生成每日的日期時(shí)間 |
| Week | Week 1 00:00:00 | 生成每周的日期時(shí)間, 0~6 分別代表周日到周六 |
| Month | Month 1 00:00:00 | 生成每月該日期的時(shí)間,建議不要使用20日之后的日期 |
以上日期如果超過(guò)時(shí)間自動(dòng)生成下一個(gè)時(shí)間,每月時(shí)間使用時(shí),如本月不存在該日期,則直接返回錯(cuò)誤。
代碼示例:
vtime, err := grapeTimer.Parser("Day 13:59:59") // 返回值為標(biāo)準(zhǔn)的*time.Time
if err != nil {
// 處理錯(cuò)誤...
}
vtime, err = grapeTimer.Parser("Week 6 23:59:59")
if err != nil {
// 處理錯(cuò)誤...
}
vtime, err = grapeTimer.Parser("Month 26 13:59:59")
if err != nil {
// 處理錯(cuò)誤...
}
代碼輸出:
2017-05-24 13:59:59 +0800 CST
評(píng)論
圖片
表情
