Mastering Golang
  • Tentang Go
  • Instalasi Go
  • Membuat Project Go
  • Go Run & Go Build
  • Apa itu Package pada Go
  • Imports dan Exports
  • Variabel
  • Tipe Data
  • Konstanta dan Komentar
  • Operator
  • Type Conversion
  • Kondisional - IF
  • Kondisional - Switch Case
  • Looping
  • Array
  • Array - Looping
  • Slices
  • Pointer
  • Map
  • Fungsi
  • Struct
  • Method
  • Interface
  • Interface Kosong
  • Concurrency
  • Concurrency - Goroutines
  • Channel
  • Buffered Channel
  • Channel - Close and Range
  • Channel - Direction
  • Channel - Select
  • Concurrency - WaitGroup
  • Concurrency - Mutex
  • JSON Data
  • SQL
  • URL Parsing
  • GO Vendor
  • Unit Testing
  • Go Basic for Web Development
    • Aplikasi Web pada Go - Hello World
    • Root Routing
    • Query String
    • Web Service API Server
    • HTTP Basic Auth
    • RESTFul API dengan Gin dan Gorm
Powered by GitBook
On this page

Was this helpful?

Concurrency

Pada sesi ini kita akan membahas sebenarnya apa sih concurrency? apakah sama dengan paralel?

PreviousInterface KosongNextConcurrency - Goroutines

Last updated 4 years ago

Was this helpful?

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.

Studi Kasus

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.

Concurrency is not Parallelism
Logo
Ilustrasi Bongkar Barang