Golang 并发编程 之 超时处理
并发编程中的超时处理
在并发编程中,要放弃运行时间太长的同步调用,请使用带有time.After的select语句,如下:
import (
"errors"
"fmt"
"time"
)
func main() {
var timeoutNanoseconds time.Duration = 5 * time.Second
c := make(chan error, 1)
go func() {
time.Sleep(20 * time.Second)
c <- errors.New("error")
} ()
select {
case err := <-c:
// use err and reply
fmt.Println(err)
case <-time.After(timeoutNanoseconds):
// call timed out
fmt.Println("timeout...")
}
}
以上代码在超时5秒后退出