Concurrency - WaitGroup
WaitGroup digunakan untuk menunggu sampai beberapa collection dari goroutine selesai berjalan. Jadi WaitGroup digunakan untuk blocking statement selanjutnya sampai proses goroutine selesai.
Misalnya kita mempunyai 3 goroutine yang akan dijalankan pada fungsi main
. Maka fungsi main
akan menunggu sampai ketiga goroutine selesai dieksekusi barulah melanjutkan statement berikutnya atau berhenti.
Untuk menggunakan WaitGroup, kita harus menggunakan package bawaan Go yaitu sync.WaitGroup
.
Mari kita lihat contoh penggunaan WaitGroup:
WaitGroup adalah sebuah tipe data. Pada kode di atas kita membuat zero value variabel dengan tipe WaitGroup
pada line 18. Cara kerja WaitGroup
adalah menggunakan counter. Ketika kita menjalankan fungsi Add
dari WaitGroup
and mengisi nilai argumen dengan nilai int
, maka counter dari WaitGroup
akan naik secara incremental dari nilai awal the yang kita isi pada argumen Add
yaitu 1
. Lalu cara untuk menurunkan counter secara decrement adalah dengan memanggil fungsi Done()
dari WaitGroup. Fungsi Wait()
akan memblocking Goroutine
yang dipanggil sampai counter bernilai 0
atau zero.
Last updated