私のプログラムにグローバルなクライアントがいるとしましょう。このプログラム内には、同じグローバルクライアントでリクエストを行うゴルーチンがいくつかあります。例えばnet/http
Golang 疑似コード:
package main
func editTransportAndFetch(c *http.Client) {
c.Transport = &http.Transport{
// Make some unique change here
}
c.Get("https://www.google.com")
}
func main() {
client := http.Client
// Spawns 10 processes
for i := 0; i < 10; i++ {
go editTransportAndFetch(client)
}
}
この疑似コードの例では、http.Transport
編集中の 10 個のプロセスを生成する方法を示しています。この例の場合、まったく同じ変更が行われているため、干渉はあまり問題にならない可能性があります。ただし、これらのプロセスが同時に発生している場合、グローバル クライアントのトランスポートを更新する 1 つのプロセスは、別のプロセスが使用している可能性のあるトランスポートに干渉しますか?
DialTLSContext
私の最終的な使用例は、グローバル クライアントを持ち、特定の要求に対してのみカスタムを指定できるようにしたいということです。を使用したくないリクエストもDialTLSContext
同時に実行されている可能性があります。http.Transport
あるリクエストのクライアントの を編集すると、干渉して別のリクエストも使用DialTLSContext
したくない場合でも使用される可能性があるのではないかと心配しています。