Mengenal Goroutine Pada Bahasa Pemrograman Golang

bahasa pemrograman go

Pada sebuah kasus transfer uang elektorik terdapat waktu tunggu pada background proses, dimana sistem akan melakukan proses validasi data selanjutnya mengirimkan perintah ke server untuk melakukan transaksi. Jika proses ini tidak dilakukan secara asynchronous maka akan terdapat waktu tunggu yang tentunya membuat aktifitas user menjadi tidak efektif. Dengan Goroutine proses ini bisa di eksekusi berbarengan dengan proses lain.

Goroutine mirip dengan thread thread, tapi sebenarnya bukan. Sebuah native thread bisa berisikan sangat banyak goroutine. Mungkin lebih pas kalau goroutine disebut sebagai mini thread. Goroutine sangat ringan, hanya dibutuhkan sekitar 2kB memori saja untuk satu buah goroutine. Eksekusi goroutine bersifat asynchronous, menjadikannya tidak saling tunggu dengan goroutine lain.

Goroutine merupakan salah satu bagian paling penting dalam concurrent programming di Go. Salah satu yang membuat goroutine sangat istimewa adalah eksekusi-nya dijalankan di multi core processor. Kita bisa tentukan berapa banyak core yang aktif, makin banyak akan makin cepat.

Penerapa Goroutine

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.

Berikut merupakan contoh implementasi sederhana tentang goroutine. Program di bawah ini menampilkan 10 baris teks, 5 dieksekusi dengan cara biasa, dan 5 lainnya dieksekusi sebagai goroutine baru.

package main

import "fmt"
import "runtime"

func print(till int, message string) {
    for i := 0; i < till; i++ {
        fmt.Println((i + 1), message)
    }
}

func main() {
    runtime.GOMAXPROCS(2)

    go print(5, "halo")
    print(5, "apa kabar")
}

Pada kode di atas, Fungsi runtime.GOMAXPROCS(n) digunakan untuk menentukan jumlah core yang diaktifkan untuk eksekusi program.

Pembuatan goroutine baru ditandai dengan keyword go. Contohnya pada statement go print(5, "halo"), di situ fungsi print() dieksekusi sebagai goroutine baru.

Dari contoh kode program diatas, tentunya penggunaan Goroutine cukup simple dan sederhana, kode yang sederhana ini sangat berguna saat kamu membuat kode program yang mana eksekusi kode program tersebut berjalan pada background proses tanpa menunggu respon balikan dari kode program yang dijalankan.

Penggunaan Fungsi runtime.GOMAXPROCS()

Fungsi ini digunakan untuk menentukan jumlah core atau processor yang digunakan dalam eksekusi program.

Jumlah yang diinputkan secara otomatis akan disesuaikan dengan jumlah asli logical processor yang ada. Jika jumlahnya lebih, maka dianggap menggunakan sejumlah prosesor yang ada.

Baca artikel lainya :