-2

私のプログラムにグローバルなクライアントがいるとしましょう。このプログラム内には、同じグローバルクライアントでリクエストを行うゴルーチンがいくつかあります。例えば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したくない場合でも使用される可能性があるのではないかと心配しています。

4

1 に答える 1