Belajar Golang #24 : Cara menggunakan Goroutine – Concurrency

Tutorial golang yang membahas pengertian Goroutine, cara membuat dan menggunakan goroutine dengan mudah di dalam kode program yang mengimplementasikan penggunaan concurrency.

Sebelumnya kita sudah belajar mengenai Perbedaan Concurrency dan Parallelism. Apabila anda belum mengetahui perbedaan tersebut, saya sarankan untuk membacanya terlebih dahulu.

Apa itu Goroutine ?

Yuk yang belum ngerti pengertian goroutine kita pahami dulu. Goroutine adalah sebuah method maupun bisa yang bisa di jalankan dengan method maupun fungsi lainnya. Goroutine bisa di katakan mini thread, dimana thread tersebut berjalan secara ringan.

Dengan adanya goroutine harapannya dalam menjalankan sebuah proses secara bersamaan dan dapat menjalankan banyak goroutine. Bisa di katakan goroutine mempunya sifat asynchronous.

Cara Membuat Goroutine Baru

Untuk membuat goroutine yang sederhana cukup mudah. Pembuatan goroutine baru di awali dengan syntaks “go” di ikuti dengan nama method maupun fungsi. Method yang di awali dengan keyword go artinya method tersebut di anggap sebuah goroutine.

Oke langsung saja silahkan buat program golang baru.

main.go

Hasilnya:

Belajar Golang #24 : Cara menggunakan Goroutine - Concurrency

Perhatikan kode di atas, terlihat suatu fungsi bernama say(). Fungsi say() di jalankan sebagai goroutine. Sedangkan fungsi main akan mencetak sebuah teks “Ini Fungsi Utama”. Program di atas artinya ketika fungsi main di jalankan akan sekaligus menjalankan fungsi say().

Kenapa terdapat kode “time.Sleep(1 * time.Second)” ?

Fungsi main berisi sebuah kode hanya mencetak suatu teks, ketika tidak menghentikan sementara waktu dengan waktu akan tidak ada kesempatan untuk goroutine berjalan.

Maka dari itu fungsi main() akan di hentikan dalam waktu tertentu untuk menunggu hasil dari goroutine selesai.

Sekarang coba kalau kita hapus kode “Time.Sleep(1 * time.Second)“.

main.go

Hasilnya :

Belajar Golang #24 : Cara menggunakan Goroutine - Concurrency
Cara Membuat Goroutine Baru di Golang

Perhatikan kode dan gambar di atas, terbukti bahwa yang akan di proses dan di cetak hanya fungsi utama saja yaitu main(). Dan goroutine dengan fungsi say() tidak di jalankan, masih bersifat blocking.

Membuat Lebih dari Satu Goroutine

Contoh penerapan goroutine sebelumnya hanya menggunakan satu goroutine saja, hal ini belum terlihat manfaat goroutine yang sebenarnya. Mari kita buat program golang lagi agar lebih mengerti cara penggunaan goroutine di golang.

main.go

Hasilnya :

Belajar Golang #24 : Cara menggunakan Goroutine - Concurrency
Membuat Lebih dari satu Goroutine di Golang

Perhatikan kode dan hasil di atas, terdapat 2 goroutine yaitu cetakAngka() dan cetakHuruf(). Isi dari 2 fungsi tersebut menghasilkan nilai yang berbeda. Pada cetakAngka() terdapat angka daam bentuk slice yang kemudian di tampilkan hasilnya berupa angka menggunakan perulangan, sedangkan cetakHuruf() digunakan untuk mencetak huruf dari data slice yang ada.

Terdapat waktu berhenti untuk kedua goroutine di mana pada cetakAngka() sebesar 100 mili detik dan cetakHuruf() sebesar 100 mili detik juga.

2 Goroutine tersebut berjalan bersamaan. Pada proses perulangan terdapat waktu berhenti sementara agar dapat menjalankan goroutine yang lain. Dalam kasus ini ketika yang berjalan goroutine cetakAngka(), maka pada setiap perulangan akan di hentikan sejenak, hal ini guna agar goroutine cetakHuruf() juga berjalan tanpa menunggu semua proses yang ada di dalam fungsi cetakAngka() selesai. Maka hasil dari 2 goroutine di atas tidak urut yang berupa perpaduan angka dan huruf.

Pada saat proses yang ada di goroutine selesai maka fungsi main akan berhenti ketika waktu tidur yang di tentukan di main selesai. Artinya setelah waktu 3000 mili detik maka program golang berhenti.

Oke sekian tutorial golang yang membahas terkait Goroutine. Semoga bermanfaat.

Leave a Reply