You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go中http.Transport与http.Client是否支持并发修改?

http.Client的并发安全性说明

核心结论

  • http.Client支持被多个goroutine并发调用其方法(如Do()、Get()),这也是官方推荐复用Client的核心原因。
  • http.Client不支持并发修改其字段,并发修改会引发数据竞争,导致不可预期的行为。

官方文档依据

// The Client's Transport typically has internal state (cached TCP
// connections), so Clients should be reused instead of created as
// needed. Clients are safe for concurrent use by multiple goroutines.

这段文档里的"safe for concurrent use"特指并发调用Client的方法是安全的,因为其内部的Transport(默认是http.Transport)已经做了并发同步处理,能安全管理连接池等内部状态。

针对你的场景说明

你要基于单个http.Client并发执行20000个不同参数的http.Request,只要满足以下条件,就是完全安全的:

  • 只调用http.Client的方法(如Do(req))发起请求,不修改该Client的任何字段(比如Timeout、Transport等)。
  • 每个请求使用独立的http.Request实例(你已经提到是不同参数的请求,通常自然满足这点)。

内容的提问来源于stack exchange,提问作者Colduction

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 04:14:51