クイック デプロイメント: Golang プロジェクトの Go WaitGroup アプリケーション ガイド
はじめに:
同時プログラミングでは、すべての goroutine がタスクを完了するまで待つのが一般的です。 。 Go WaitGroup は、この目的のための Golang の強力なツールです。この記事では、Go WaitGroup の基本概念を紹介し、読者が Golang プロジェクトで WaitGroup を迅速にデプロイおよび適用できるように、いくつかの具体的なコード例を示します。
1. WaitGroup とは何ですか?
WaitGroup は Golang の同時実行プリミティブで、ゴルーチンのグループがタスクを完了するのを待つために使用されます。主に 3 つのメソッドを提供します。
これら 3 つの方法を組み合わせて使用すると、すべての goroutine タスクが完了するのを簡単に待ってから、後続の操作を実行できます。
2. コード例:
WaitGroup の使用法とアプリケーション シナリオをよりよく理解するために、2 つの具体的なコード例を以下に示します。
例 1:
この例では、WaitGroup を使用して、ゴルーチンのグループが実行を完了するのを待ちます。
package main import ( "fmt" "sync" ) func worker(id int, wg *sync.WaitGroup) { defer wg.Done() fmt.Printf("Worker %d starting ", id) // 模拟一些耗时的操作 for i := 0; i < 5; i++ { fmt.Printf("Worker %d working... ", id) } fmt.Printf("Worker %d finished ", id) } func main() { var wg sync.WaitGroup for i := 1; i <= 5; i++ { wg.Add(1) go worker(i, &wg) } wg.Wait() fmt.Println("All workers finished") }
上記のコードでは、時間のかかる操作をシミュレートするワーカー関数を定義しています。 main 関数では、ループを使用して 5 つのゴルーチンを作成し、wg.Add(1) を呼び出して待機中のゴルーチンを WaitGroup に追加します。次に、各ゴルーチンがタスクを完了した後、wg.Done() を呼び出してタスクに完了のマークを付けます。最後に、メイン関数で wg.Wait() を呼び出してすべてのゴルーチンが完了するのを待ち、「すべてのワーカーが終了しました」と出力します。
例 2:
この例では、WaitGroup とチャネルを使用してメインの goroutine を実装し、すべての子 goroutine がタスクを完了して結果を集計するのを待ちます。
package main import ( "fmt" "sync" ) func worker(id int, wg *sync.WaitGroup, result chan<- int) { defer wg.Done() fmt.Printf("Worker %d starting ", id) // 模拟一些耗时的操作 sum := 0 for i := 0; i < 5; i++ { sum += i } fmt.Printf("Worker %d finished, result: %d ", id, sum) result <- sum } func main() { var wg sync.WaitGroup result := make(chan int, 5) for i := 1; i <= 5; i++ { wg.Add(1) go worker(i, &wg, result) } wg.Wait() close(result) total := 0 for r := range result { total += r } fmt.Printf("All workers finished, total result: %d ", total) }
上記のコードでは、各ゴルーチンの計算結果をワーカー関数のチャネルを通じてメインのゴルーチンに渡し、最後にすべての結果をメインのゴルーチンにまとめます。 WaitGroupとchannelを組み合わせることで、goroutineのタスク待ちや結果集計をより柔軟に実装することができます。
3. 概要:
Go WaitGroup は、Golang で同時タスク待機を実装するための重要なツールです。この記事では、読者が Golang プロジェクトで WaitGroup のアプリケーションをすぐに理解してデプロイできるように、2 つの具体的なコード例を示します。読者がこの強力なツールを最大限に活用して、プロジェクトの同時実行パフォーマンスと信頼性を向上できることを願っています。
以上が迅速な導入: Golang プロジェクトにおける Go WaitGroup のアプリケーション ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。