#Golang-Concurrent
18 artikel
Membuat Generator Image Thumbnail Menggunakan Pipeline Pattern
Generate Image menggunakan Golang juga kita gunakan untuk mempermudah editor agar tidak perlu melakukan edit memakai aplikasi lain sehingga kita bisa mudah menaruh image yang diinginkan. Nah saat ini santekno akan coba membuat generator Image Thumbnail yang sudah ada pada tutorial ini. Misalkan kita ingin membuat thumbnail ini image-nya menjadi lebih ringkas daripada image yang aslinya. Maka kita perlu melakukan convert menjadi file yang lebih ringan dengan ukuran yang kecil. Bagaimana jika image tersebut banyak maka jika kita pakai seperti biasa Golang sequencial maka akan menjadi lama saat kita melakukan eksekusinya. Maka, kita akan coba bandingkan bagaimana proses generate image Thumbnail ini dengan golang yang sequencial dengan menggunakan concurrent Pipeline Patter.
Membuat Web Crawler menggunakan Golang
Web Crawler sering kita gunakan untuk mengambil sesuatu pada suatu website sehingga kita mendapatkan konten yang dibutuhkan. Hal ini biasanya digunakan untuk kebutuhan konten. Dalam hal ini kita akan coba menggunakan Golang untuk membuat Web Crawler sederhana dan akan mengambil beberapa konten seperti URL yang ada pada halaman suatu website tersebut.
Mengenal Package Context With Timeout Pada Golang
Pengenalan package context.WithTimeout
Pada artikel sebelumnya kita sudah mempelajari context.WithCancel
dimana kita mengirim sinyal cancel dari context
secara manual. Selain itu kita juga bisa menambahkan sinyal cancel
ke dalam context
secara otomatis dengan menggunakan pengaturan waktu timeout
. Dengan menggunakan pengaturan waktu, kita tidak perlu lagi melakukan pemanggilan eksekusi cancel secara manual, tetapi dengan timeout
cancel akan otomatis dieksekusi jika waktu timeout
sudah terlewati.
Mengenal Dan Implementasi Sync Atomic Pada Golang
Pengenalan sync.Atomic
Untuk operasi atomik pada variabel pada golang, paket sync/atomic
menawarkan metode tingkat rendah tertentu. Di Go, metode ini memungkinkan beberapa goroutine
untuk mengubah variabel bersama dengan aman tanpa menggunakan kunci atau sinkronisasi eksplisit lainnya. Fungsi seperti AddInt64
, AddUint32
, CompareAndSwapInt32
, dll digunakan untuk melakukan aritmatika dasar pada berbagai jenis variabel dapat ditemukan dalam paket atom
. Metode AddInt64
misalnya, menjamin bahwa modifikasi yang dibuat oleh goroutine
lain akan terlihat saat menambahkan nilai tertentu ke variabel int64
dengan gaya atomik.
Mengenal Sync Cond Pada Golang
Pengenalan sync.Cond
sync.Cond
adalah proses locking yang digunakan dengan kondisi tertentu. sync.Cond
dalam paket sinkronisasi Golang mengimplementasikan variabel kondisional yang dapat digunakan dalam skenario dimana banyak reader
sedang menunggu sumber daya berbarengan. Cond pooling point: beberapa goroutine menunggu, 1 event notifikasi goroutine terjadi. Setiap Cond diasosiasikan dengan Lock
**(sync. Mutex atau sync.RWMutex) yang harus ditambahkan saat memodifikasi kondisi atau memanggil metode wait()
, untuk melindungi kondisi.
Mengenal Sync Once Pada Golang
Pengenalan sync.Once
Fitur ini pada Golang bisa kita gunakan untuk memasikan sebuah function dilakukan eksekusi hanya dalam satu kali saja. Kadang kalau kita sudah memiliki banyak goroutine yang sedang mengakses, maka dengan sync.Once
ini bisa dipastikan hanya goroutine yang memiliki akses pertama yang bisa mengeksekusi function tersebut. Maka jika ada goroutine lain yang sedang berjalan tidak akan melakukan eksekusi dan menghiraukan fungsi tersebu.
Mengenal Sync Map Pada Golang
Pengenalan sync.Map
sync.Map
ini sebenarnya mirip sekali dengan Generic Golangnya map
biasa, namun yang membedakan map
ini aman untuk digunakan saat concurrent goroutine.
Mengenal Sync Pool Pada Golang
Pengenalan sync.Pool
sync.Pool
sering kita dengar saat implementasi design patter yaitu bernama Object Pool Pattern. Pool adalah sekumpulan objek sementara yang dapat disimpan dan diambil secara individual. Sebuah Pool aman untuk digunakan oleh beberapa goroutine secara bersamaan.
Mengenal WaitGroup Pada Golang
Perkenalan
Waitgroup adalah fitur dari Golang yang digunakan untuk menunggu sebuah proses yang dilakukan oleh beberapa goroutine. Hal ini dilakukan dikarenakan kita perlu melakukan proses secara bersamaan tetapi ketika akan melanjutkan proses selanjutnya kita membutuhkan data dari hasil sebelumnya akhirnya kita harus menunggu terlebih dahulu dari proses sebelumnya untuk mendapatkan datanya.
Mengenal Deadlock Dan Cara Mengatasinya Pada Golang
Pengenalan
Salah satu masalah yang terjadi ketika menggunakan concurrent
atau paralel
yaitu sistem deadlock
. Apa itu deadlock? Deadlock adalah kejadian dimana sebuah proses concurrent atau goroutine saling menunggu (lock) sehingga tidak ada satupun goroutine yang bisa berjalan. Maka hati-hati bagi Anda jika membuat aplikasi atau program yang mengimplementasikan mutex lock and unlock dengan menggunakan goroutine. Baiklah kita akan coba saja langsung bagaimana simulasi pada program golang ketika terjadi deadlock
.
Cara Membuat RW Mutex Dan Kegunaanya Pada Golang
Pengenalan Sync.RWMutex
Setelah kita pernah mempelajari
Pengenalan dan Pembuatan `Mutex` pada postingan sebelumnya, lalu kita akan lanjut ke tahap selanjutnya yaitu pengenalan RWMutex
. Nah apa bedanya dengan yang sebelumnya?
Cara Membuat Mutex Dan Kegunaannya Pada Golang
Pengenalan Sync.Mutex
Mutex atau kepanjangan dari Mutual Exclusion adalah suatu cara untuk mengatasi race condition di dalam bahasa Golang. Mutex bisa digunakan untuk melakukan locking
and unlocking
terhadap suatu mutex sehingga jika sudah di lock
maka tidak akan bisa melakukan locking
lagi sampai kita melakukan unlocking
.