Go で個別のチャネルを作成する方法: メモリ リーク防止ガイド

Linda Hamilton
リリース: 2024-10-29 04:40:02
オリジナル
432 人が閲覧しました

How to Create Distinct Channels in Go: A Guide to Memory Leak Prevention

Go の個別のチャネル

Go では、個別の値のみを出力するチャネルを作成することが一般的な要件です。ただし、これを実現するには、いくつかの追加の考慮事項が必要です。

実装

簡単な解決策は、マップを利用して検出された値を保存することです。以下に簡単な実装を示します。

<code class="go">func UniqueGen(min, max int) <-chan int {
    m := make(map[int]struct{}, max-min)
    ch := make(chan int)
    go func() {
        for i := 0; i < 1000; i++ {
            v := min + rand.Intn(max)
            if _, ok := m[v]; !ok {
                ch <- v
                m[v] = struct{}{}
            }
        }
        close(ch)
    }()

    return ch
}</code>
ログイン後にコピー

メモリ リークの懸念

マップを使用して以前に発生した値を記憶する場合、メモリ リークが心配になる場合があります。ただし、この実装では、マップは可能な値の範囲 (最大値 - 最小値) に制限されており、チャネルが閉じるとクリアされます。したがって、メモリリークの心配はありません。

以上がGo で個別のチャネルを作成する方法: メモリ リーク防止ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート