Concurrency
Pada sesi ini kita akan membahas sebenarnya apa sih concurrency? apakah sama dengan paralel?
Last updated
Pada sesi ini kita akan membahas sebenarnya apa sih concurrency? apakah sama dengan paralel?
Last updated
Untuk kamu yang penasaran apasih latar belakang dibuatnya concurrency pada Go? Kamu wajib menonton video ini:
Rob Pike adalah salah satu creator bahasa Go. Pak Rob bilang bahwa Concurrency itu berbeda dengan Parallelism.
Lebih mudahnya kita bisa cek slide berikut ini:
Concurrency atau konkurensi berbeda dengan paralel. Paralel adalah eksekusi banyak proses secara bersamaan. Sedangkan konkurensi adalah komposisi dari sebuah proses. Konkurensi merupakan struktur, sedangkan paralel adalah bagaimana eksekusinya berlangsung.
Pak Rob Pike bilang seperti ini:
Concurrency is a way to structure a program by breaking it into pieces that can be executed independently
Jadi kita membuat program dengan memecahkannya menjadi beberapa fungsi yang bekerja secara independen.
Misalnya pada kasus bongkar barang dari truk ke dalam gudang penyimpanan.
Kita anggap ada 1 orang yang akan mendata, menurunkan dan memasukkan barang ke dalam gudang. Tentunya ini akan memakan waktu yang lama.
Oke sekarang bagaimana jika kita menambahkan 1 orang lagi untuk membantu mengangkut barang? Tentunya ini akan bottleneck dari segi pendataan dan koordinasi lainnya.
Solusinya dengan pendekatan concurrency yaitu kita akan mengandalkan 3 orang yang masing-masing memiliki tugas (independen).
Orang pertama: Bertugas mengangkut barang dari dalam truk ke Cart (tempat barang)
Orang kedua: Membawa Cart yang sudah berisi barang ke dalam Gudang
Orang ketiga: Mengangkut barang yang ada pada Cart untuk di data dan disusun di tempat penyimpanan dalam Gudang
Jadi berbeda konsepnya dengan paralel yang melakukan banyak hal dalam satu waktu. Pada concurrency kita mengatur bagaimana agar dapat menyesuaikan dan menyusun banyak hal dalam satu waktu.
Concurrency pada Go dapat diterapkan dengan beberapa pendekatan:
Goroutines
Channels
Buffered Channels
Range & Close
Select
Lebih detailnya kita akan mencoba di sesi selanjutnya.