go 通过select实现超时

Posted dqh123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go 通过select实现超时相关的知识,希望对你有一定的参考价值。

package main

import (
    "fmt"
    "time"
)

func main()  {
    ch := make(chan int)
    quit := make(chan bool)

    go func() {
        for{
            select {
                  case num := <-ch:
                      fmt.Println("num=",num)
                     case <-time.After(3*time.Second):
                         fmt.Println("超时")
                          quit <- true
                          //break
            }
        }
    }()

    for i:= 0;i<5;i++{
        ch <- i
        time.Sleep(time.Second)
    }
    qt:= <-quit
    fmt.Println("程序结束:qt=",qt)


}

 

以上是关于go 通过select实现超时的主要内容,如果未能解决你的问题,请参考以下文章

Golang✔️走进 Go 语言✔️ 第十七课 select & 超时和非阻塞

Golang✔️走进 Go 语言✔️ 第十七课 select & 超时和非阻塞

云原生时代崛起的编程语言Go并发编程实战

Go语言12

[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础

Go——处理用户连接超时