Go语言如何并发超时处理详解
实现原理:
并发一个函数,等待1s后向timeout写入数据,在select中如果1s之内有数据向其他channel写入则会顺利执行,如果没有,这是timeout写入了数据,则我们知道超时了。
实现代码:
packagemain import"fmt" import"time" funcmain(){ ch:=make(chanint,1) timeout:=make(chanbool,1) //并发执行一个函数,等待1s后向timeout写入true gofunc(){ time.Sleep(1000) timeout<-true }() //这里会等待ch或timeout读出数据 //因为一直没有向ch写入数据 //在1s后向timeout写入了数据 //所以执行了timeout的case //利用这个技巧可以实现超时操作 select{ case<-ch: fmt.Println("readfromch") case<-timeout: fmt.Println("timeout...") } }
总结
以上就是这篇文章的全部内容,希望对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。