go select case 问题?

作者站长头像
站长
· 阅读数 4
    ticker1 := time.NewTicker(3 * time.Second)
    ticker2 := time.NewTicker(3 * time.Second)
    fmt.Println("当前时间为:", time.Now())
    go func() {
        for {
            select {
            case <-ticker1.C:
                t := <-ticker1.C
                fmt.Println("当前时间为=1=:", t)
            }
        }
    }()
    go func() {
        for {

            //从定时器中获取数据
            t := <-ticker2.C
            fmt.Println("当前时间为=2=:", t)

        }
    }()

如代码所示目的都是像间隔3s执行一次但是实际执行的时候 1 执行一次要比 2 间隔更久go select case 问题?因为最近在弄一个线上项目 这个周期本来是设定10s的最后变成了 一分多钟才执行一次好奇是什么问题导致的?

回复
1个回答
avatar
test
2024-06-25

1 读了两次,是两个周期。

可以直接写 case t := <-ticker1.C

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容