超时对于一个需要连接外部资源,或者有耗时较长的操作的程序而言是很重要的。得益于通道和select,在Go中实现超时操作是简介而优雅的
在这个例子中,假如我们执行一个外部调用,并在2秒后使用通道c1返回他的执行结果。
这里是使用select实现一个超时操作。res := ← c1等待结果,←time.After等待尝试(1秒钟)以后发送的值。由于select默认处理第一个已准备好的接收操作,因此如果操作耗时超过了允许的1秒的话,将会执行超时case
如果我们允许一个长一点的超时时间:3秒,就可以成功的从c2接收到值,并且打印出来
运行这个程序,首先显示运行超时的操作,然后是成功接收的。
上一篇: 28、通道选择器
下一篇: 30、非阻塞通道操作