0
假設我有以下功能:具有不同超時時間的Golang goroutine-safe http客戶端?
func SendRequest(c *Client, timeout time.Duration) {
if timeout > 0 {
c.Timeout = timeout
} else {
c.Timeout = defaultTimeout
}
...
}
我想允許多箇中間人程序來調用這個函數(共享同一個HTTP客戶端),但這顯然是書面的方式不能保證夠程安全。 (也改變傳入客戶端的超時也是奇怪的...)
我不知道什麼是最好的辦法做到這一點。我應該爲不同的超時使用不同的客戶端嗎?我應該使用一些互斥鎖嗎?或者一般來說,我如何共享具有不同超時時間的HTTP客戶端?
謝謝!
因此,對於Go中的HTTP,哪些部分是昂貴的,以便我們應該儘可能重用,如果有的話,爲什麼? – aforaudrey
@丹青:你什麼意思是「哪一部分很貴」?客戶和運輸 - 你是什麼意思的「昂貴」?一切都有成本,所以重用你所能做的。例如,Transport是處理連接的地方,因此使用單個傳輸會增加重新使用連接的可能性。 – JimB