package main
// 从多个网络地址获得信息,如果有一个出错或超时,则取消所有未完成的操作
import (
"context"
"golang.org/x/sync/errgroup"
"io/ioutil"
"log"
"net/http"
"time"
)
type query struct {
url string // 查询地址
resp string // 正常返回的信息
err error // 错误消息,如果有的话
}
func search(ctx context.Context, q query, resultChan chan<- query) func() error {
return func() error {
// 产生新的timeout的context,超时1秒,事实上超时掉/slow请求
reqCtx, cancel := context.WithTimeout(ctx, time.Second)
// 永远调用cancel()
defer cancel()
req, err := http.NewRequest
golang备忘录002: cancel/timeout by errGroup
最新推荐文章于 2024-07-10 18:05:53 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)