


Bagaimana untuk menyegerakkan Goroutine menggunakan WaitGroup dalam Go?
Jun 01, 2024 pm 09:18 PMBagaimana untuk menggunakan WaitGroup untuk menyegerakkan Goroutine dalam Go?
Apakah itu WaitGroup
? WaitGroup
?
WaitGroup
是 Go 中的一个内置类型,用于协调并发操作,它可以用来确保一组 goroutine 在执行完毕之前不会继续执行。
如何使用 WaitGroup
使用 WaitGroup
的步骤如下:
- 创建
WaitGroup
var wg sync.WaitGroup
- 在 goroutine 中使用
Add()
当一个新的 goroutine 开始执行时,使用 WaitGroup.Add(1)
来增加计数器。
wg.Add(1) go func() { // goroutine 代码 wg.Done() }()
- 在 goroutine 中使用
Done()
当 goroutine 执行完毕时,使用 WaitGroup.Done()
来减少计数器。
func() { // goroutine 代码 wg.Done() }
- 等待 Goroutine 完成
使用 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: 🎜- 🎜Buat
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") }
- 🎜Gunakan
Add()
dalam goroutine🎜
WaitGroup.Add(1)
untuk menambah pembilang. 🎜rrreee- 🎜Gunakan
Done()
dalam goroutine🎜
WaitGroup ()
untuk mengurangkan kaunter. 🎜rrreee- 🎜Tunggu sehingga Goroutine selesai🎜
WaitGroup.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!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Bagaimana untuk menghantar mesej Go WebSocket?

Bagaimana untuk mengelakkan kebocoran memori dalam pengoptimuman prestasi teknikal Golang?

Pemahaman mendalam tentang kitaran hayat fungsi Golang dan skop pembolehubah

Bagaimana untuk memadankan cap masa menggunakan ungkapan biasa dalam Go?

Perbezaan antara bahasa Golang dan Go

Amalan terbaik dokumentasi rangka kerja Golang

Bagaimana untuk melihat dokumentasi fungsi Golang dalam IDE?

Panduan untuk menguji unit fungsi serentak Go
