time.NewTicker 实现计时器

package main

import (
    "time"
    "fmt"
)

func QueryDB(ch chan int) {
    time.Sleep(time.Second * 4)
    ch <- 100
}

func main() {
    ch := make(chan int)
    go QueryDB(ch)
    t := time.NewTicker(time.Second * 3)    // 定时器,每个Duration时间向Chan中放入一个时间戳

    // select chan 谁先可以从chan中获取数据,就case执行哪一个,否则就一直阻塞。
    select {
    case v:= <- ch:
        fmt.Println("result:", v)
    case v:= <- t.C:    // 从定时器取出时间戳
        fmt.Println("query timeout...", v)
    }
}

 

相关文章:

  • 2021-05-18
猜你喜欢
  • 2021-10-01
  • 2021-05-25
相关资源
相似解决方案