Go WaitGroup を使用して同時タスクを処理する方法
Go 言語では、sync.WaitGroup
を使用して同時タスクを処理できます。 sync.WaitGroup
は、同時タスクを処理するときにコルーチンの実行を調整するための簡潔かつ効果的な方法を提供します。
sync.WaitGroup
は便利なツールであり、待機する必要があるコルーチンの数がわからない場合に同時タスクを処理するための推奨方法です。これにより、すべてのタスクが完了するまでメイン コルーチンが実行を終了しないようにすることができます。
sync.WaitGroup
を使用して同時タスクを処理する方法を示す具体的な例を見てみましょう。
まず、sync
パッケージをインポートする必要があります:
import ( "fmt" "sync" )
次に、sync.WaitGroup
オブジェクトを作成しましょう:
var wg sync.WaitGroup
次に、Add
メソッドを呼び出して、待機するタスクの数を追加します。この例では、2 つのタスクを追加します。
wg.Add(2)
次に、タスクを実行する 2 つのコルーチンを開始できます。タスクを匿名関数にカプセル化し、パラメータとして go
キーワードに渡すことができます。
go func() { defer wg.Done() // 这里是第一个任务的代码逻辑 }() go func() { defer wg.Done() // 这里是第二个任务的代码逻辑 }()
この例では、各コルーチン内の go
キーワードの後に defer wg.Done()
を配置して、タスクの完了後に確実に通知できるようにします。 WaitGroup
オブジェクト。
最後に、Wait
メソッドを実行して、すべてのタスクが完了するまでメイン コルーチンをブロックします。このメソッドは、WaitGroup オブジェクト内のタスクの数をゼロに減らします。
wg.Wait()以下は完全なサンプル コードです:
package main import ( "fmt" "sync" ) func main() { var wg sync.WaitGroup wg.Add(2) go func() { defer wg.Done() fmt.Println("Task 1 executed") }() go func() { defer wg.Done() fmt.Println("Task 2 executed") }() wg.Wait() fmt.Println("All tasks completed") }このコードを実行すると、出力に 2 つのタスクの実行結果が表示され、その後「すべてのタスクが完了しました」と表示されることがわかります。
sync.WaitGroup を使用すると、同時タスクを簡単に処理でき、メイン コルーチンの実行を続行する前にすべてのタスクが完了していることを確認できます。これは、クローラー、並列コンピューティング、その他のシナリオなど、メイン コルーチンですべてのタスクが完了するのを待つ必要がある場合に特に便利です。
sync.WaitGroup を使用すると、Go 言語での同時タスクの処理に役立ちます。これは、コルーチンの実行を調整し、メイン コルーチンの実行を続行する前にすべてのタスクが確実に完了するようにするための簡潔で効果的な方法を提供します。この記事が同時タスク処理の理解に役立つことを願っています。
以上がGo WaitGroup を使用して同時タスクを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。