Concurrency - Goroutines
Pada sesi ini akan di bahas bagaimana menggunakan Goroutines
Last updated
Pada sesi ini akan di bahas bagaimana menggunakan Goroutines
Last updated
Goroutine adalam mini thread yang ringan yang ada pada Go. Goroutine merupakan salah satu bagian paling penting dalam concurrent programming di Go, salah satunya adalah eksekusi-nya dijalankan di multi core processor. Kita bisa tentukan berapa banyak core yang aktif, makin banyak akan semakin cepat.
Untuk menerapkan goroutine, proses yang akan dieksekusi sebagai goroutine harus dibungkus kedalam sebuah fungsi. Pada saat pemanggilan fungsi tersebut, ditambahkan keyword go
didepannya, dengan itu goroutine baru akan dibuat dengan tugas adalah menjalankan proses yang ada dalam fungsi tersebut.
Misalnya kita membuat sebuah fungsi f
dengan parameter n
bertipe int
. Fungsi ini sangat sederhana yaitu menampilkan angka 0 sampai 9 secara berurutan. Jika kode di atas dijalankan maka akan menampilkan output berikut:
Pada output di atas kita mencoba untuk menjalankan program 2 kali. Hasilnya berbeda-beda. Lalu kenapa output dari iterasi 0-9 tidak ditampilkan?
Pada goroutine, program tidak akan menunggu return statement dari function namun langsung menjalankan statement line berikutnya.
Pada kasus di atas func main
selesai lebih dulu daripada function f
(masih menjalankan proses concurrency) jadi program dianggap berhenti dan exit.
Untuk menunggu concurrency selesai dijalankan kita bisa mengatur dengan menambahkan time delay pada function main
.
Kita akan mempraktikan studi kasus yang sama dengan contoh pada materi concurrency yaitu proses bongkar barang dari truck ke gudang.
Kita lihat ada penggunaan fmt.Scanln
yaitu untuk memblock statement selanjutnya agar program tidak exit secara otomatis. Ini dikarenakan func main
kemungkinan akan selesai terlebih dahulu dibandingkan proses perulangan yang berisi proses goroutine.