Goroutine sangat berguna untuk menjalan proses secara asynchronous. Kita juga bisa menggunakan beberapa goroutine untuk menjalankan beberapa proses dalam waktu bersamaan. Tapi bagaimana kalau kita ingin menunggu goroutine tersebut selesai sebelum melanjutkan ke proses berikutnya? Kita dapat menggunakan WaitGroup untuk mengunggu goroutine selesai dijalankan.
Apa itu WaitGroup
WaitGroup adalah struct bawaan Go yang ada di package sync
. WaitGroup dapat menunggu beberapa goroutine selesai. Ayo kita lihat bagaimana cara WaitGroup di Go.
Bagaimana cara menggunakan WaitGroup
Misalkan kita mempunyai dua fungsi seperti ini:
|
|
Kedua fungsi ini ingin dijalankan pada waktu bersamaan kemudian menunggu sampai kedua fungsi tersebut selesai, baru kemudian lanjut ke proses berikutnya. Kita bisa menggunakan WaitGroup untuk melakukan hal tersebut. Lihat contoh dibawah ini tentang cara menggunakan WaitGroup.
|
|
Pertama-tama, kita men-declare sebuah WaitGroup di line 7. Lalu untuk setiap goroutine, kita perlu memanggil wg.Add(1)
sebelum menjalankan proses pada goroutine, dan wg.Done()
setelah proses tersebut selesai. Jangan lupa memanggil wg.Done()
, kalau lupa programmu bisa menunggu selamanya. Kemudian kita gunakan wg.Wait()
untuk menunggu semua proses selesai.
Kesimpulan
Ada banyak cara untuk menunggu goroutine selesai dijalankan. Salah satunya adalah menggunakan WaitGroup. Ini adalah cara menggunakan WaitGroup yang sederhana. Kalau kamu ada pertanyaan atau saran, bisa tulis komentar di bawah.