Bagaimana untuk menggunakan WaitGroup untuk menyegerakkan Goroutine dalam Go?
Apakah itu 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
ialah jenis terbina dalam Go yang digunakan untuk menyelaraskan operasi serentak Ia boleh digunakan untuk memastikan bahawa sekumpulan goroutine tidak meneruskan pelaksanaan sehingga ia menyelesaikan pelaksanaan. 🎜🎜🎜Cara menggunakan WaitGroup
🎜🎜🎜Langkah-langkah untuk menggunakan WaitGroup
adalah seperti berikut: 🎜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()
dalam goroutine🎜WaitGroup.Add(1)
untuk menambah pembilang. 🎜rrreeeDone()
dalam goroutine🎜WaitGroup ()
untuk mengurangkan kaunter. 🎜rrreeeWaitGroup.Wait()
untuk menyekat goroutine semasa sehingga semua berkaitan goroutines Pelaksanaan lengkap. 🎜rrreee🎜🎜Kes praktikal🎜🎜🎜Berikut ialah contoh yang menunjukkan cara menggunakan WaitGroup
untuk menyegerakkan tiga goroutin serentak: 🎜rrreeeAtas ialah kandungan terperinci Bagaimana untuk menyegerakkan Goroutine menggunakan WaitGroup dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!