golang channel 超时如何处理

golang channel 超时如何处理,第1张

个人理解的channel超时处理思路分享戚滑,若有错误或者不足,请联系我:qq 869329877

主程序通过go timeout()挂起一个协程,在timeout方法里面利用select来监控逻辑处理的变化,如果请求时间过长或者连接到其他服务比如grpc、mysql等服务中断导致高兆腊的请求时间过长,则直接超时,超猜睁时要返回定义的管道数据结果,否则程序会报错。

做空滚了一个参考森并实例。假设某线程占用时间5秒,超时时间为2秒

func mian() {

lock := sync.Mutex{}

lock.Lock()

defer lock.Unlock()

timer := time.NewTimer(2 * time.Second)

end:=make(chan int)

go func() {

time.Sleep(5*time.Second)

fmt.Println("wait")

end<-1

}()

select {

case <-end:

case <-timer.C:

}

fmt.Println("End"此亏迹)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12388068.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存