基本チュートリアル: Golang での Go WaitGroup とそのアプリケーション、特定のコード例が必要です
前書き:
Golang (Go 言語) では、同時実行の記述手順は次のとおりです。共通のタスク。 Golang は豊富な同時実行プリミティブと API を提供します。重要なツールの 1 つは WaitGroup です。この記事では、WaitGroup の概念と使用法を紹介し、いくつかの具体的なコード例を示します。
1. WaitGroup の概念
WaitGroup は Golang の同時実行プリミティブであり、ゴルーチンのグループの完了を待つために使用されます。 WaitGroup は内部でカウンターを維持し、初期値は 0 です。各コルーチンの実行が開始されると、カウンターが 1 ずつ増加します。コルーチンが終了すると、カウンターは 1 つ減ります。メインスレッドは、カウンターが 0 に達するまで、つまりすべてのコルーチンが実行されるまで、Wait() メソッドを通じてブロックできます。
2. WaitGroup の基本的な使用法
WaitGroup を使用するには、次の手順が必要です:
WaitGroup オブジェクトを作成します: まず、「sync」パッケージをインポートする必要があります。 、WaitGroup オブジェクトを作成します。
import "sync" var wg sync.WaitGroup
コルーチンを WaitGroup に追加: 実行するコルーチンごとに、カウンターをインクリメントし、go キーワードを使用して新しいコルーチンでタスクを実行する必要があります。
wg.Add(1) go func() { // 协程的具体逻辑 // ... wg.Done() // 协程执行完成后减少计数器 }()
コルーチンの完了を待機: メインスレッドは Wait() メソッドを使用して、カウンターが 0 になるまで、つまりすべてのコルーチンが実行されるまでブロックできます。
wg.Wait()
サンプル コード:
以下は、Golang での WaitGroup のアプリケーションを示す具体的なコード例です。この例では、WaitGroup を使用して複数のコルーチンが完了するのを待ってから、後続のロジックを続行します。
package main import ( "fmt" "sync" "time" ) func main() { var wg sync.WaitGroup for i := 0; i < 5; i++ { wg.Add(1) go func(num int) { defer wg.Done() time.Sleep(time.Second) // 模拟长时间的任务 fmt.Printf("协程 %d 完成 ", num) }(i) } fmt.Println("等待所有协程完成...") wg.Wait() fmt.Println("所有协程已完成!") }
上の例では、5 つのコルーチンの実行をシミュレートし、各コルーチンは 1 秒待機しました。 WaitGroup を使用すると、すべてのコルーチンが実行されるまでメインスレッドがブロックされます。出力では、コルーチンは並列実行されるため、完了する順序が固定されていないことがわかります。
3. WaitGroup に関する注意事項
WaitGroup を使用する場合は、次の注意事項に従う必要があります:
結論:
WaitGroup は Golang の非常に便利な同時実行プリミティブで、コルーチンのグループの完了を便利に待つことができます。この記事では、WaitGroup の基本概念と使用法を紹介し、具体的なコード例を示します。この記事を学習することで、Golang での WaitGroup の使用法をよりよく理解し、応用できるようになれば幸いです。
以上が基本チュートリアル: Go WaitGroup とそのアプリケーション (Golang)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。