最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

golang定時器和超時的使用詳解

 更新時間:2020年12月21日 17:23:38   作者:誠寜  
這篇文章主要介紹了golang定時器和超時的使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

我就廢話不多說了,大家還是直接看代碼吧~

func main() {
  var a chan string
  a =make(chan string)
  go sendDataTo(a)
  go timing()
  getAchan(10*time.Second,a)
}
func sendDataTo(a chan string) {
  for {
     a <- "我是a通道的數(shù)據(jù)"
    time.Sleep(1e9 *3)
  }
}
//在一定時間內(nèi)接收不到a的數(shù)據(jù)則超時
func getAchan(timeout time.Duration, a chan string) {
  var after <-chan time.Time
  loop:
  after = time.After(timeout)
  for{
    fmt.Println("等待a中的數(shù)據(jù),10秒后沒有數(shù)據(jù)則超時")
    select {
    case x :=<- a:
      fmt.Println(x)
      goto loop
    case <-after:
      fmt.Println("timeout.")
      return
    }
  }
}
func timing() {
  //定時器,10秒鐘執(zhí)行一次
  ticker := time.NewTicker(10 * time.Second)
  for {
    time := <-ticker.C
    fmt.Println("定時器====>",time.String())
  }
}     

補充:golang的定時器NewTimer、NewTicker使用

廢話不多說,直接看代碼

package main 
import (
  "fmt"
  "sync"
  "time"
)
 
/**
*ticker只要定義完成,從此刻開始計時,不需要任何其他的操作,每隔固定時間都會觸發(fā)。
*timer定時器,是到固定時間后會執(zhí)行一次
*如果timer定時器要每隔間隔的時間執(zhí)行,實現(xiàn)ticker的效果,使用 func (t *Timer) Reset(d Duration) bool
 */
func main() {
  var wg sync.WaitGroup
  wg.Add(2)
  //NewTimer 創(chuàng)建一個 Timer,它會在最少過去時間段 d 后到期,向其自身的 C 字段發(fā)送當時的時間
  timer1 := time.NewTimer(2 * time.Second)
 
  //NewTicker 返回一個新的 Ticker,該 Ticker 包含一個通道字段,并會每隔時間段 d 就向該通道發(fā)送當時的時間。它會調(diào) 
  //整時間間隔或者丟棄 tick 信息以適應反應慢的接收者。如果d <= 0會觸發(fā)panic。關(guān)閉該 Ticker 可      
  //以釋放相關(guān)資源。
  ticker1 := time.NewTicker(2 * time.Second)
 
  go func(t *time.Ticker) {
    defer wg.Done()
    for {
      <-t.C
      fmt.Println("get ticker1", time.Now().Format("2006-01-02 15:04:05"))
    }
  }(ticker1)
 
  go func(t *time.Timer) {
    defer wg.Done()
    for {
      <-t.C
      fmt.Println("get timer", time.Now().Format("2006-01-02 15:04:05"))
      //Reset 使 t 重新開始計時,(本方法返回后再)等待時間段 d 過去后到期。如果調(diào)用時t   
      //還在等待中會返回真;如果 t已經(jīng)到期或者被停止了會返回假。
      t.Reset(2 * time.Second)
    }
  }(timer1) 
  wg.Wait()
}

運行結(jié)果:

get ticker1 2018-09-07 22:44:29

get timer 2018-09-07 22:44:29

...

額外說明:

time.NewTicker定時觸發(fā)執(zhí)行任務,當下一次執(zhí)行到來而當前任務還沒有執(zhí)行結(jié)束時,會等待當前任務執(zhí)行完畢后再執(zhí)行下一次任務。查閱go官網(wǎng)的文檔和經(jīng)過代碼驗證。

time.NewTimer和Reset()函數(shù)實現(xiàn)定時觸發(fā),Reset()函數(shù)可能失敗,經(jīng)測試。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • Golang通脈之數(shù)據(jù)類型詳情

    Golang通脈之數(shù)據(jù)類型詳情

    這篇文章主要介紹了Golang通脈之數(shù)據(jù)類型,在編程語言中標識符就是定義的具有某種意義的詞,比如變量名、常量名、函數(shù)名等等,Go語言中標識符允許由字母數(shù)字和_(下劃線)組成,并且只能以字母和_開頭,更詳細內(nèi)容請看下面文章吧
    2021-10-10
  • 一文掌握gorm簡介及如何使用gorm

    一文掌握gorm簡介及如何使用gorm

    Gorm是一款用于Golang的ORM框架,它提供了豐富的功能,包括模型定義、數(shù)據(jù)驗證、關(guān)聯(lián)查詢等,下面通過本文掌握gorm簡介及使用方法,需要的朋友可以參考下
    2024-02-02
  • Golang時間處理中容易踩的坑分析解決

    Golang時間處理中容易踩的坑分析解決

    這篇文章主要為大家介紹了Golang時間處理中容易踩的坑分析解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • Golang中的Unicode與字符串示例詳解

    Golang中的Unicode與字符串示例詳解

    這篇文章主要給大家介紹了關(guān)于Golang中Unicode與字符串的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Golang具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-05-05
  • 詳解Golang 中的并發(fā)限制與超時控制

    詳解Golang 中的并發(fā)限制與超時控制

    這篇文章主要介紹了詳解Golang 中的并發(fā)限制與超時控制,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • golang使用接口進行靈活緩存

    golang使用接口進行靈活緩存

    緩存是編程中一種常見的技術(shù),通過存儲昂貴的計算或?IO?結(jié)果來快速查找,從而提高性能,本文將介紹一下Go的接口如何幫助構(gòu)建靈活、可擴展的緩存,感興趣的可以了解下
    2023-09-09
  • 一文教你如何快速學會Go的struct數(shù)據(jù)類型

    一文教你如何快速學會Go的struct數(shù)據(jù)類型

    結(jié)構(gòu)是表示字段集合的用戶定義類型。它可以用于將數(shù)據(jù)分組為單個單元而不是將每個數(shù)據(jù)作為單獨的值的地方。本文就來和大家聊聊Go中struct數(shù)據(jù)類型的使用,需要的可以參考一下
    2023-03-03
  • Go操作Kafka的實現(xiàn)示例(kafka-go)

    Go操作Kafka的實現(xiàn)示例(kafka-go)

    本文介紹了使用kafka-go庫在Go語言中與Kafka進行交互,涵蓋了kafka-go的安裝、API使用、消息發(fā)送與消費方法,以及如何通過DockerCompose快速搭建Kafka環(huán)境,文章還比較了其他兩個常用的Kafka客戶端庫,感興趣的可以了解一下
    2024-10-10
  • 深入分析Go?實現(xiàn)?MySQL?數(shù)據(jù)庫事務

    深入分析Go?實現(xiàn)?MySQL?數(shù)據(jù)庫事務

    本文深入分析了Go語言實現(xiàn)MySQL數(shù)據(jù)庫事務的原理和實現(xiàn)方式,包括事務的ACID特性、事務的隔離級別、事務的實現(xiàn)方式等。同時,本文還介紹了Go語言中的事務處理機制和相關(guān)的API函數(shù),以及如何使用Go語言實現(xiàn)MySQL數(shù)據(jù)庫事務。
    2023-06-06
  • go中new和make的區(qū)別小結(jié)

    go中new和make的區(qū)別小結(jié)

    new 只分配內(nèi)存,make 用于初始化 slice、map 和 channel,本文詳細的介紹了go中new和make的區(qū)別小結(jié),感興趣的可以了解一下
    2023-05-05

最新評論

宁津县| 山东省| 湖北省| 青龙| 皋兰县| 马鞍山市| 宿州市| 徐闻县| 修文县| 札达县| 台湾省| 远安县| 沈丘县| 松原市| 秦皇岛市| 天镇县| 横峰县| 阳曲县| 威远县| 思南县| 徐水县| 四川省| 女性| 科尔| 苏州市| 开封市| 甘洛县| 五峰| 新乡县| 梁平县| 育儿| 龙胜| 山阴县| 泸溪县| 炉霍县| 西乡县| 桦南县| 北京市| 长治县| 南阳市| 安国市|