【发布时间】:2015-07-13 21:49:28
【问题描述】:
假设我有以下功能:
func SendRequest(c *Client, timeout time.Duration) {
if timeout > 0 {
c.Timeout = timeout
} else {
c.Timeout = defaultTimeout
}
...
}
我想允许多个 go-routine 调用这个函数(共享同一个 HTTP 客户端),但是这样的写法显然不能保证 goroutine 的安全。 (另外更改传入的客户端的超时时间也很奇怪......)
我不确定最好的方法是什么。我应该为不同的超时使用不同的客户端吗?我应该使用一些互斥锁吗?或者一般而言,我如何共享具有不同超时的 HTTP 客户端?
谢谢!
【问题讨论】: