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...")
}
}
总结
以上就是这篇文章的全部内容,希望对大家的学习或者工作带来一定的帮助,如果有疑问大家可以留言交流。
热门推荐
1 训练狗狗基础
2 怎么训练狗狗笑
3 怎么训练狗狗卧下
4 上海狗狗训练基地
5 训练狗狗排便
6 狗狗基础训练
8 如何训练狗狗装死
9 狗狗站姿训练
10 狗狗训练用品
11 训练狗狗吧
12 狗狗要怎么训练
13 怎么训练狗狗玩球
14 训练狗狗唤回
15 狗狗训练躺下
16 狗狗训练指令
17 狗狗的训练技巧
18 狗狗不好训练