亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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())
  }
}     

補(bǔ)充:golang的定時器NewTimer、NewTicker使用

廢話不多說,直接看代碼

package main 
import (
  "fmt"
  "sync"
  "time"
)
 
/**
*ticker只要定義完成,從此刻開始計時,不需要任何其他的操作,每隔固定時間都會觸發(fā)。
*timer定時器,是到固定時間后會執(zhí)行一次
*如果timer定時器要每隔間隔的時間執(zhí)行,實(shí)現(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ā)送當(dāng)時的時間
  timer1 := time.NewTimer(2 * time.Second)
 
  //NewTicker 返回一個新的 Ticker,該 Ticker 包含一個通道字段,并會每隔時間段 d 就向該通道發(fā)送當(dāng)時的時間。它會調(diào) 
  //整時間間隔或者丟棄 tick 信息以適應(yīng)反應(yīng)慢的接收者。如果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()
}

運(yùn)行結(jié)果:

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

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

...

額外說明:

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

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

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

相關(guān)文章

  • Go結(jié)合反射將結(jié)構(gòu)體轉(zhuǎn)換成Excel的過程詳解

    Go結(jié)合反射將結(jié)構(gòu)體轉(zhuǎn)換成Excel的過程詳解

    這篇文章主要介紹了Go結(jié)合反射將結(jié)構(gòu)體轉(zhuǎn)換成Excel的過程詳解,大概思路是在Go的結(jié)構(gòu)體中每個屬性打上一個excel標(biāo)簽,利用反射獲取標(biāo)簽中的內(nèi)容,作為表格的Header,需要的朋友可以參考下
    2022-06-06
  • 在Go程序中實(shí)現(xiàn)服務(wù)器重啟的方法

    在Go程序中實(shí)現(xiàn)服務(wù)器重啟的方法

    這篇文章主要介紹了在Go程序中實(shí)現(xiàn)服務(wù)器重啟的方法,由于很多人盲目崇拜谷歌"親爹",Go語言在國內(nèi)有著不尋常的人氣,需要的朋友可以參考下
    2015-06-06
  • 一些關(guān)于Go程序錯誤處理的相關(guān)建議

    一些關(guān)于Go程序錯誤處理的相關(guān)建議

    錯誤處理在每個語言中都是一項重要內(nèi)容,眾所周知,通常寫程序時遇到的分為異常與錯誤兩種,Golang中也不例外,這篇文章主要給大家介紹了一些關(guān)于Go程序錯誤處理的相關(guān)建議,需要的朋友可以參考下
    2021-09-09
  • golang中為什么不存在三元運(yùn)算符詳解

    golang中為什么不存在三元運(yùn)算符詳解

    這篇文章主要給大家介紹了關(guān)于golang中為什么不存在三元運(yùn)算符的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Go語言實(shí)現(xiàn)一個Http?Server框架(一)?http庫的使用

    Go語言實(shí)現(xiàn)一個Http?Server框架(一)?http庫的使用

    本文主要介紹用Go語言實(shí)現(xiàn)一個Http?Server框架中對http庫的基本使用說明,文中有詳細(xì)的代碼示例,感興趣的同學(xué)可以借鑒一下
    2023-04-04
  • VsCode搭建Go語言開發(fā)環(huán)境的配置教程

    VsCode搭建Go語言開發(fā)環(huán)境的配置教程

    這篇文章主要介紹了在VsCode中搭建Go開發(fā)環(huán)境的配置教程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • 淺談Go中數(shù)字轉(zhuǎn)換字符串的正確姿勢

    淺談Go中數(shù)字轉(zhuǎn)換字符串的正確姿勢

    這篇文章主要介紹了淺談Go中數(shù)字轉(zhuǎn)換字符串的正確姿勢,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Go 1.18新特性之泛型的全面講解

    Go 1.18新特性之泛型的全面講解

    本文力求能讓未接觸過泛型編程的人也能較好理解Go的泛型,所以行文可能略顯啰嗦。但是請相信我,看完這篇文章你能獲得對Go泛型非常全面的了解
    2023-03-03
  • Hugo 游樂場內(nèi)容初始化示例詳解

    Hugo 游樂場內(nèi)容初始化示例詳解

    這篇文章主要為大家介紹了Hugo 游樂場內(nèi)容初始化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Go語言Http調(diào)用之Post請求詳解

    Go語言Http調(diào)用之Post請求詳解

    前文我們介紹了如何進(jìn)行 HTTP 調(diào)用,并通過 GET 請求的例子,講述了 query 參數(shù)和 header 參數(shù)如何設(shè)置,以及響應(yīng)體的獲取方法。 本文繼上文,接下來會通過 POST 請求,對其他參數(shù)的設(shè)置進(jìn)行介紹,感興趣的可以了解一下
    2022-12-12

最新評論