Goroutines 协程在长期阻塞的状态下怎样跳过阻塞或者终止 协程 如题,我在做tcp服务端发现如果用户端无响应就始终阻塞在读取,无法结束Goroutines ,怎样才能内部或外部停止Goroutines
有疑问加站长微信联系(非本文作者)

Goroutines 协程在长期阻塞的状态下怎样跳过阻塞或者终止 协程 如题,我在做tcp服务端发现如果用户端无响应就始终阻塞在读取,无法结束Goroutines ,怎样才能内部或外部停止Goroutines
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
`单行代码`
读取完全可以通过超时,不能无限制的堵塞
我应用过程是这样,那要怎样设置超时
我现在就是一直保持在阻塞状态,不超时,也就无法结束Goroutines
程序里面肯定可以设置超时吧。网络程序超时很重要的。
tcp本来就可以设置超时的吧
goruotie只能自杀,不能通过类似 pthread_cancel这种方式外部杀掉的
超时可以采用这种做法 timeout :=make(chan bool ,1) go func(){ time.Sleep( SomeTime ) timeout<-true }() select { case <-theRealChannel: doSomeThing case <-timeout doSomeThing }