Kode program buffered channel

Golang – Mengenal dan menggunakan buffered channel

Seperti yang dijelaskan pada artikel sebelum-sebelumnya bahwa channel itu hanya bisa menerima 1 data, artinya jika kita menambahkan data ke 2 maka kita disuruh menunggu sampai data ke 1 ada yang mengambil. Tetapi terkadang ada kasus dimana pengirim lebih cepat dibandingkan penerima, dalam hal ini jika kita menggunakan channel maka otomatis pengirim akan ikut lambat juga, conothnya misalnya pengirim dalam 1 detik mengirim 2 data tetapi ternyata penerima hanya bisa mengambil 1 data dalam 1 detik maka otomatis pengirim tidak akan bisa mengirim 2 data.

Untuk mengatasi hal ini, di dalam channel ada yang namanya buffer, jadi kita bisa menambahkan buffer di dalam channel atau istilahnya buffered channel, jadi fitur ini adalah buffer yang digunakan untuk menampung data di dalam channel.

Buffer capacity

Di dalam buffer itu capacity, jadi buffer itu istilahnya seperti penyimpanan yang di dalam channel dan dia punya capacity nya. kita bebas memasukkan berapa jumlah kapasitas antrian di dalam buffer, misal jika kita set buffer nya 5 maka kita bisa menerima 5 data di buffer, artinya channel tersebut bisa menerima data sebanyak 5. Jika kita mengirim data ke 6, maka kita diminta menunggu sampai buffer nya ada yang kosong. Ini cocok sekali jika kita memiliki goroutine yang menerima data lebih lambat dari pada yang mengirim data.

Untuk membuat buffer kita bisa menggunakan make seperti sebelumnya hanya saja akan sedikit berbeda seperti ini make(chan string, JumLahBuffer), untuk lebih detail coba buat unit test seperti berikut

package belajar_golang_goroutines

import (
	"fmt"
	"testing"
	"time"
)

func TestBufferedChannel(t *testing.T) {
	channel := make(chan string, 2)
	defer close(channel)

	go func() {
		channel <- "Rendy"
		channel <- "Wijaya"
	}()

	go func() {
		fmt.Println(<-channel)
		fmt.Println(<-channel)
	}()

	time.Sleep(2 * time.Second)
	fmt.Println("Selesai")
}
Kode program buffered channel
Kode program buffered channel

Pada unit test diatas kita membuat channel seperti biasa tetapi kita juga mengatur buffer nya menjadi 2, oleh karena iu saat di baris 14 & 15 yang menambah data ke channel tidak terjadi error karena datanya di tampung pada buffer.

Penutup

Pada artikel kali ini kita telah belajar tentang buffered channel pada bahasa pemrogaman go. Dan pada artikel selanjutnya saya akan membahas range channel pada bahasa pemrogaman go.

Leave a reply:

Your email address will not be published.

Site Footer

Sliding Sidebar

About Me

About Me

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam.

Social Profiles

Facebook