Goroutine — Go

Goroutine Goroutine adalah lightweight thread yang dikelola oleh Go runtime. Membuat goroutine sangat murah — kamu bisa menjalankan ribuan bahkan jutaan…

Goroutine

Goroutine adalah lightweight thread yang dikelola oleh Go runtime. Membuat goroutine sangat murah — kamu bisa menjalankan ribuan bahkan jutaan goroutine secara bersamaan.

Membuat Goroutine

Cukup tambahkan keyword go sebelum pemanggilan fungsi:

func cetakPesan(pesan string) {
    for i := 0; i < 3; i++ {
        fmt.Println(pesan)
        time.Sleep(100 * time.Millisecond)
    }
}

func main() {
    go cetakPesan("Goroutine 1")
    go cetakPesan("Goroutine 2")
    cetakPesan("Main")
}

Goroutine vs Thread OS

AspekGoroutineThread OS
Ukuran stack~2 KB (bisa grow)~1 MB fixed
PembuatanSangat cepatRelatif lambat
SchedulingGo runtime (M:N)OS kernel
JumlahJutaanRibuan

WaitGroup

Untuk menunggu goroutine selesai, gunakan sync.WaitGroup:

import "sync"

func main() {
    var wg sync.WaitGroup

    for i := 1; i <= 3; i++ {
        wg.Add(1)
        go func(id int) {
            defer wg.Done()
            fmt.Printf("Worker %d selesai\n", id)
        }(i)
    }

    wg.Wait() // Tunggu semua goroutine selesai
    fmt.Println("Semua selesai!")
}

Catatan Penting

Yang akan kamu pelajari