新聞中心
基本介紹
?gtimer?是一個(gè)并發(fā)安全的高性能定時(shí)器,類似于Java的?Timer?。?gtimer?組件舊版本采用的是分層時(shí)間輪(?Hierarchical Timing Wheel?)設(shè)計(jì),從GOframe v1.16版本開始,采用了優(yōu)先級(jí)隊(duì)列(?PriorityQueue?)實(shí)現(xiàn)。

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),上街企業(yè)網(wǎng)站建設(shè),上街品牌網(wǎng)站建設(shè),網(wǎng)站定制,上街網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,上街網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
使用場(chǎng)景:
任何定時(shí)任務(wù)場(chǎng)景,大批量定時(shí)任務(wù)/延遲任務(wù)的場(chǎng)景,超時(shí)控制/頻率控制的業(yè)務(wù)場(chǎng)景,對(duì)于定時(shí)時(shí)間準(zhǔn)確度要求不高的業(yè)務(wù)場(chǎng)景。
注意事項(xiàng):
- 任何的定時(shí)任務(wù)都是有誤差的,在定時(shí)間隔比較大,或者并發(fā)量大,負(fù)載較高的系統(tǒng)中尤其明顯,具體請(qǐng)參考:https://github.com/golang/go/issues/14410
- 定時(shí)間隔不會(huì)考慮任務(wù)的執(zhí)行時(shí)間。例如,如果一項(xiàng)工作需要3分鐘才能執(zhí)行完成,并且計(jì)劃每隔5分鐘運(yùn)行一次,那么每次任務(wù)之間只有2分鐘的空閑時(shí)間。
- 需要注意的是單例模式運(yùn)行的定時(shí)任務(wù),任務(wù)的執(zhí)行時(shí)間會(huì)影響該任務(wù)下一次執(zhí)行的開始時(shí)間。例如:一個(gè)每間隔1秒執(zhí)行的任務(wù),運(yùn)行耗時(shí)為1秒,那么在第1秒開始運(yùn)行后,下一次任務(wù)將會(huì)在第3秒開始執(zhí)行。因?yàn)橹虚g有一次運(yùn)行檢查時(shí)發(fā)現(xiàn)有當(dāng)前任務(wù)正在進(jìn)行,因此退出等待下一次執(zhí)行檢查。
使用方式:
import "github.com/gogf/gf/v2/os/gtimer"接口文檔:
https://pkg.go.dev/github.com/gogf/gf/v2/os/gtimer
簡(jiǎn)要說明:
- ?
New?方法用于創(chuàng)建自定義的任務(wù)定時(shí)器對(duì)象,并可在創(chuàng)建時(shí)通過?interval?的?TimerOptions?參數(shù)指定定時(shí)器的最小?tick?時(shí)間間隔。 - ?
Add?方法用于添加定時(shí)任務(wù),其中: - ?
interval?參數(shù)用于指定方法的執(zhí)行的時(shí)間間隔。 - ?
job?參數(shù)為需要執(zhí)行的任務(wù)方法。 - ?
AddEntry?方法添加定時(shí)任務(wù),支持更多參數(shù)的控制。 - ?
AddSingleton?方法用于添加單例定時(shí)任務(wù),即同時(shí)只能有一個(gè)該任務(wù)正在運(yùn)行。 - ?
AddOnce?方法用于添加只運(yùn)行一次的定時(shí)任務(wù),當(dāng)運(yùn)行一次數(shù)后該定時(shí)任務(wù)自動(dòng)銷毀。 - ?
AddTimes?方法用于添加運(yùn)行指定次數(shù)的定時(shí)任務(wù),當(dāng)運(yùn)行?times?次數(shù)后該定時(shí)任務(wù)自動(dòng)銷毀。 - ?
Search?方法用于根據(jù)名稱進(jìn)行定時(shí)任務(wù)搜索(返回定時(shí)任務(wù)?*Entry?對(duì)象指針)。 - ?
Start?方法用于啟動(dòng)定時(shí)器(使用?New?創(chuàng)建定時(shí)器時(shí)會(huì)自動(dòng)啟動(dòng))。 - ?
Stop?方法用于停止定時(shí)器。 - ?
Close?方法用于關(guān)閉定時(shí)器。
默認(rèn)定時(shí)器
大部分的場(chǎng)景下使用默認(rèn)的定時(shí)器即可。使用?gtimer?的默認(rèn)定時(shí)器時(shí),默認(rèn)的間隔時(shí)間為100ms,因此理論的時(shí)間間隔誤差范圍為0~100ms??梢允褂靡韵聝煞N方式修改默認(rèn)的定時(shí)器參數(shù):
- 使用啟動(dòng)參數(shù)
- ?
gf.gtimer.interval=50?: 修改默認(rèn)的時(shí)間刻度為50毫秒 - 使用環(huán)境變量
- ?
GF_GTIMER_INTERVAL=50?
網(wǎng)站名稱:創(chuàng)新互聯(lián)GoFrame教程:GoFrame gtimer-基本介紹
標(biāo)題路徑:http://m.5511xx.com/article/dpdhddh.html


咨詢
建站咨詢
