Gorutin (Goroutine) adalah sebuah thread eksekusi yang ringan. |
|
![]() ![]() package main
|
|
import (
"fmt"
"time"
)
|
|
func f(from string) {
for i := 0; i < 3; i++ {
fmt.Println(from, ":", i)
}
}
|
|
func main() {
|
|
Misalkan kita punya sebuah pemanggilan fungsi |
f("langsung")
|
Untuk menjalankan fungsi ini di sebuah gorutin, gunakan
|
go f("gorutin")
|
Kamu juga bisa memulai sebuah gorutin untuk pemanggilan fungsi anonim. |
go func(msg string) {
fmt.Println(msg)
}("anonim")
|
Dua buah pemanggilan fungsi kita berjalan secara bersamaan dalam gorutin yang terpisah. Tunggu sampai mereka selesai (untuk pendekatan yang lebih kuat, gunakan WaitGroup). |
time.Sleep(time.Second)
fmt.Println("selesai")
}
|
Saat kita menjalankan program ini, pertama kita melihat keluaran dari pemanggilan fungsi blocking, lalu penyisipan keluaran dari dua gorutin. Penyisipan ini memperlihatkan gorutin-gorutin sedang dijalankan secara bersamaan oleh runtime Go. |
$ go run goroutines.go
langsung : 0
langsung : 1
langsung : 2
gorutin : 0
anonim
gorutin : 1
gorutin : 2
selesai
|
Selanjutnya kita akan melihat pelengkap dari gorutin pada program konkuren Go: kanal (channel). |
Contoh selanjutnya: Kanal (Channels).