Ngomongin Uang : Menjadi ‘Kaya’ Versi Kamu SendiriKekayaan sering kali bukan hanya soal uang atau status sosial. Kekayaan yang sesungguhnya bersifat sangat personal, karena setiap orang mendefinisikan kesuksesan dan kebahagiaannya dengan cara yang berbeda. Namun, apa pun definisi kekayaan bagi kamu, UANG adalah alat ukur dan kendaraan yang bisa membawamu mencapai tujuan. Karena itulah, memahami keuangan adalah hal yang fundamental dalam membangun kehidupan terbaik versi kamu. Free Klik Disini ! |
Pada tutorial sebelumnya Anda telah belajar bagaimana cara mengambil pesan dari proses Goroutine dengan menggunakan Channel : Komunikasi goroutine dengan channel pada bahasa golang.
Go menyediakan package sync
, berisi cukup banyak API untuk menangani masalah multiprocessing (goroutine), salah satunya adalah menggunakan sync.WaitGroup
.
Kegunaan sync.WaitGroup
adalah untuk sinkronisasi goroutine. Berbeda dengan channel, sync.WaitGroup
memang dirancang khusus untuk maintain goroutine, cara penggunaannya juga lebih mudah dan efektif dibanding channel.
sync.WaitGroup digunakan untuk menunggu goroutine, setelah Anda mendefinisikan variable sync.WaitGroup tambahkan parameter Add(int). Parameter ini berisi berapa banyak jumlah goroutine yang akan Anda eksekusi.
package mainimport (
"fmt"
"runtime"
"strconv"
"sync"
)func sampleWaitgroup1(wg *sync.WaitGroup, message int64) {
defer wg.Done()
fmt.Println(fmt.Sprintf("sample WG1: %d", message))
}
func sampleWaitgroup2(wg *sync.WaitGroup, message string) {
defer wg.Done()
fmt.Println(fmt.Sprintf("sample WG2: %s", message))
}
func sampleWaitgroup3(wg *sync.WaitGroup, message float64) {
defer wg.Done()
fmt.Println(fmt.Sprintf("sample WG3: %f", message))
}func main() {
runtime.GOMAXPROCS(2)var wg sync.WaitGroup
wg.Add(3)
go sampleWaitgroup1(&wg, 10000)
go sampleWaitgroup2(&wg, "test wg2")
go sampleWaitgroup3(&wg, 1111.11111)wg.Wait()
}
sample sync await go
Jika Anda perhatikan kode diatas, Anda akan menemukan 3 fungsi yang di jalankan oleh goroutine.
Sebelum goroutine dijalankan terdapat variable wg dengan parameter Add(), paramater Add() bertipe integer yang di isi dengan jumlah goroutine yang akan dieksekusi.
sync.WaitGroup
kurang lebih sebagai berikut:sync.WaitGroup
yang dia tidak perlu tahu goroutine mana saja yang dijalankan, cukup tahu jumlah goroutine yang harus selesaisync.WaitGroup
lebih mudah dibanding channelsync.WaitGroup
lebih baik dibanding channel meneurut beberapa developer.Demo :