golang启动的协程没有办法手动关闭,比如一个注册请求,如果某些原因请求超时了,返回给客户端是超时,但服务器启动的协程还在执行注册的流程,如果用户再提交注册就会报手机号已注册。
一直没找到手动关闭协程的方法,或者别的解决超时的方法,请指点。
比如一个注册请求,如果某些原因请求超时了,返回给客户端是超时,但服务器启动的协程还在执行注册的流程
你这个本来就不能这么设计。 你这个需求算是异步通知。
所以就算客户端收到超时,也不能认定超时 。在客户端必须有一个独立逻辑。来接受通知。。如果长久接受不到才是真正的超时。。另外注册这一套逻辑不适合用协程。 协程不是这么用的。
真非得用。绝对绕不开异步通知,不然就有bug..
#4
更多评论
通过 chan 和 goroutine 通讯来实现?或者看看 [Context](http://docs.studygolang.com/pkg/context/#WithTimeout) 包?
#1