如何从外部取消访问网页的go程?

比如说,我为了更快的获得某个网页,同时发起了10个go程,分别通过不同的代理去抓取该网页,那么当我从某个go程获得返回后,就需要关闭其余9个以释放资源。

但是此时这9个go程,按照一般的写法,大概率是阻塞在http.Get或者类似的函数上,这个情况下,go程无法再从外部获取信息了———因为已经阻塞住了。

请问各位大兄弟,这种情况下程序逻辑要怎么写才能从外部关闭那9个go程?

共 3 个回复


fising

for {
    select {
        
    }
}
# 0

HobaiRiku

我和楼上想法差不多,全部用异步不阻塞方式调用http请求,将所有结果使用一个goroutine做异步检测,只要有一个结果出现,丢弃其他结果就好了,全部使用goroutine调用同步实现这个太上层了,无法操作。

# 1

a7a2

go context包可以解决楼主问题

# 2