Channel - Select
Pada sesi ini akan di bahas penggunaan select pada Channel
select
statement digunakan untuk melakukan pemilihan dan memanage multiple channel yang dibuat. select
statement akan melakukan blocking sampai ada salah satu dari case
yang berjalan.
Mari kita asumsikan bahwa kita memiliki aplikasi dan kita perlu mengembalikan output ke pengguna secepat mungkin. Database untuk aplikasi ini direplikasi dan disimpan di server yang berbeda di seluruh dunia. Asumsikan bahwa fungsi server1 dan server2 sebenarnya berkomunikasi dengan 2 server tersebut. Waktu respons setiap server bergantung pada beban masing-masing dan performa jaringan. Kita mengirim permintaan ke kedua server dan kemudian menunggu. Server yang merespons pertama akan dipilih dan respons lainnya diabaikan. Dengan cara ini kita dapat mengirim permintaan yang sama ke beberapa server dan mengembalikan respons tercepat ke pengguna.
Default Case
Statement default
dari select
dapat dimanfaatkan jika belum ada satupun case
yang siap dijalankan. Ini berguna untuk menghindari blocking.
Kita lihat bahwa pada kode di atas terdapat fungsi process
yang bertigas sebagai pengirim data melalui Channel. Namun proses pengiriman akan delay 3 detik, sehingga kita menambahkan default
pada select
untuk dijalankan terlebih dahulu sambil menunggu proses penerimaan data.
Last updated