婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Golang定時器的2種實現(xiàn)方法與區(qū)別

Golang定時器的2種實現(xiàn)方法與區(qū)別

熱門標簽:地圖標注免費定制店 仙桃400電話辦理 不封卡外呼系統(tǒng) 上海極信防封電銷卡價格 寧波語音外呼系統(tǒng)公司 鄭州智能語音電銷機器人價格 湛江crm外呼系統(tǒng)排名 重慶慶云企業(yè)400電話到哪申請 宿遷便宜外呼系統(tǒng)代理商

不得不說,golang的sdk做了太多的東西,定時器在golang里實現(xiàn)起來非常的簡單

兩種方式

  • NewTicker()
  • NewTimer()

代碼如下

NewTicker() 方式

func foo() {
 fmt.Println("foo() start.")
 time.Sleep(time.Second * 3)
 fmt.Println("foo() end.")
}

func TestTicker(t *testing.T) {
 ticker := time.NewTicker(time.Second * 2)
 // 清理計時器
 defer ticker.Stop()
 for {
  fmt.Println("ticker start ", time.Now().Format("15:04:05"))
  foo()
  -ticker.C
 }
}

運行結(jié)果

 

NewTimer() 方式

func foo() {
 fmt.Println("foo() start.")
 time.Sleep(time.Second * 3)
 fmt.Println("foo() end.")
}

func TestTimer(t *testing.T) {
 timer := time.NewTimer(time.Second * 2)
 // 清理計時器
 defer timer.Stop()
 for {
  fmt.Println("ticker start ", time.Now().Format("15:04:05"))
  foo()
  -timer.C
 }
}

運行結(jié)果

可以看到,就執(zhí)行了兩次就不動了

原因:NewTicker() 啟動后,會自己維護一個過期時間的通道(Channel)也就是代碼里的 -ticker.C 這句意思就是時間一到,ticker會通過管道發(fā)出一個信號給CPU,告訴CPU時間到了,該執(zhí)行定時里的方法了,信號發(fā)出后,ticker會自動的重置定時的剩余時間,然后再進行下一輪的發(fā)送信號執(zhí)行方法

但NewTimer()看源碼會發(fā)現(xiàn),它在sleep.go文件里定義的,也就是說NewTimer()相當于一個睡眠(延時執(zhí)行)。時間一到,timer會通過管道發(fā)出一個信號告訴CPU該執(zhí)行定時里的代碼了,然后這個管道就銷毀了,除非使用 timer.Reset(time.Duration * 2) 來重新激活這根管道,讓它重置定時的剩余時間,到下一輪定信號發(fā)出后,還要再次重置

所以在用定時時,還是NewTicker()方便

值得一提的是,當定時任務(wù)執(zhí)行時間過長且超過定時的間隔時間時,定時的間隔時間到了之后會等待定時任務(wù)執(zhí)行完才會進行下一輪的定時任務(wù)

總結(jié)

到此這篇關(guān)于Golang定時器的2種實現(xiàn)方法與區(qū)別的文章就介紹到這了,更多相關(guān)Golang定時器實現(xiàn)與區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • golang定時器和超時的使用詳解
  • Golang 定時器(Timer 和 Ticker),這篇文章就夠了
  • Golang中定時器的陷阱詳解
  • 用golang實現(xiàn)一個定時器任務(wù)隊列實例
  • golang中定時器cpu使用率高的現(xiàn)象詳析
  • golang time包下定時器的實現(xiàn)方法
  • Golang 定時器的終止與重置實現(xiàn)

標簽:遼寧 青海 物業(yè)服務(wù) 儋州 電子產(chǎn)品 安康 西雙版納 海南

巨人網(wǎng)絡(luò)通訊聲明:本文標題《Golang定時器的2種實現(xiàn)方法與區(qū)別》,本文關(guān)鍵詞  Golang,定時器,的,2種,實現(xiàn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Golang定時器的2種實現(xiàn)方法與區(qū)別》相關(guān)的同類信息!
  • 本頁收集關(guān)于Golang定時器的2種實現(xiàn)方法與區(qū)別的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 万全县| 衡阳市| 黎川县| 巴塘县| 凉山| 锡林浩特市| 虹口区| 虹口区| 寿宁县| 广昌县| 色达县| 克拉玛依市| 化德县| 平顺县| 克山县| 遂川县| 屏东县| 桂林市| 清徐县| 高碑店市| 基隆市| 鸡泽县| 射阳县| 景宁| 泸州市| 张北县| 安阳县| 抚顺县| 堆龙德庆县| 中阳县| 内乡县| 永修县| 上犹县| 海晏县| 梅州市| 乌恰县| 尼勒克县| 祥云县| 招远市| 湛江市| 邯郸市|