Go で WaitGroup を使用して Goroutine を同期するにはどうすればよいですか?
WaitGroup
とは何ですか? WaitGroup
?
WaitGroup
是 Go 中的一个内置类型,用于协调并发操作,它可以用来确保一组 goroutine 在执行完毕之前不会继续执行。
如何使用 WaitGroup
使用 WaitGroup
的步骤如下:
WaitGroup
var wg sync.WaitGroup
Add()
当一个新的 goroutine 开始执行时,使用 WaitGroup.Add(1)
来增加计数器。
wg.Add(1) go func() { // goroutine 代码 wg.Done() }()
Done()
当 goroutine 执行完毕时,使用 WaitGroup.Done()
来减少计数器。
func() { // goroutine 代码 wg.Done() }
使用 WaitGroup.Wait()
来阻塞当前 goroutine,直到所有关联的 goroutine 完成执行。
wg.Wait()
实战案例
以下是一个示例,演示了如何使用 WaitGroup
WaitGroup
は、同時操作を調整するために使用される Go の組み込み型であり、ゴルーチンのグループが実行を完了するまで実行を継続しないようにするために使用できます。 🎜🎜🎜WaitGroup
の使用方法🎜🎜🎜WaitGroup
を使用する手順は次のとおりです: 🎜WaitGroup
を作成します。 🎜package main import ( "fmt" "sync" ) func main() { var wg sync.WaitGroup // 创建三个并发 goroutine for i := 0; i < 3; i++ { wg.Add(1) go func(i int) { defer wg.Done() fmt.Printf("Goroutine %d complete\n", i) }(i) } // 等待所有 goroutine 完成执行 wg.Wait() // 输出:Goroutine 0 complete // 输出:Goroutine 1 complete // 输出:Goroutine 2 complete fmt.Println("All goroutines completed") }
Add()
を使用します🎜WaitGroup.Add(1)
を使用してカウンターをインクリメントします。 🎜rrreeeDone()
を使用します🎜WaitGroup Done を使用します。 ()
を使用してカウンターをデクリメントします。 🎜rrreeeWaitGroup.Wait()
を使用して、関連付けられているすべての Goroutine が完了するまで現在の Goroutine をブロックしますgoroutines 実行を完了します。 🎜rrreee🎜🎜実際的なケース🎜🎜🎜 以下は、WaitGroup
を使用して 3 つの同時ゴルーチンを同期する方法を示す例です。以上がGo で WaitGroup を使用して Goroutine を同期するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。