Saturday, February 15, 2020

Synchronous vs Asynchronous Programming

Berdasar dari rasa penasaran saya yang suka comot comot code C# dari stackoverflow, ada beberapa syntax yang buat saya penasaran seperti Task, Async, dan Await. Ketiga syntax itu punya satu tujuan, yaitu menerapkan asynchronous programming. 

Inti dari asynchronous programming yaitu menghindari blocking proses, khusus nya proses yang membutuhkan waktu lama. Saya ambil contoh dalam aplikasi desktop menghitung jumlah karakter. 

Misal Dalam satu kasus sistem membutuhkan waktu lebih dari 5 detik untuk menghitung ribuan karakter, Dalam konsep synchronous programming dalam waktu lima detik tersebut kita tidak dapat melakukan apapun seperti drag jendela aplikasi, resize jendela aplikasi, dan lain lain karena proses terblok atau tertahan 5 detik untuk menghitung jumlah karakter.

Dalam konsep asynchronous programming, hal ini bisa di hindari karena proses mengitung karakter dilakukan di thread yang berbeda (keluar dari thread utama) sehingga pada saat thread tersebut sibuk menghitung karakter kita dapat melakukan apapun di thread utama seperti drag jendela aplikasi, resize jendela aplikasi, dll. 

Dalam beberapa kasusu setiap thread di luar thread utama akan kembali ke thread utama setelah proses yang dilakukan selesai (Misal, thread utama membutuhkan nilai kembalian dari thread lain) , dari hal ini akan terjadi perbedaan waktu eksekusi dimana mungkin thread utama lebih dulu selesai atau thread kedua yang lebih dulu selesai, untuk menggabungkan nya kita harus menunggu proses satu sama lain dan menggabungkan nya ke thread utama, di dalam c# kita dapat melakukan nya dengan await

Pembahasan ketiga syntax ini : Task, Async, dan Await. Saya akan coba bahas di postingan berikut nya...
Share:
Location: Jakarta, Indonesia

0 comments:

Post a Comment