5.23 go 通过select 实现超时功能

/**
通过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(time.Second*3)://阻塞3s满足条件 进入则超时
	           fmt.Println("超时") 
		    quit<-true
	      }
	}
    }()
    
    for i:=0;i<=5;i++{
    	ch<-i
		time.Sleep(time.Second)
    }
    
    //阻塞,接收到元素则结束
    <-quit
    fmt.Println("程序结束")
	
	
}
发布了145 篇原创文章 · 获赞 115 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/h4241778/article/details/105476556