Pemrograman Asynchronous Vs. Multithreading di C#

Notification

×

Pemrograman Asynchronous Vs. Multithreading di C#

20/01/2023 | Januari 20, 2023 WIB Last Updated 2023-09-14T03:56:52Z

https://www.itnews.id/2023/01/asynchronous-vs-multithreading-c-sharp.html

Pemrograman Asynchronous digunakan pada kebutuhan yang terikat Input/ Output seperti:


  • Meminta data dari jaringan
  • Mengakses database
  • Membaca dan menulis ke sistem file.


C# memiliki model pemrograman asynchronous yang memungkinkan penulisan kode asinkron dengan mudah tanpa harus membuat callback atau menyesuaikan dengan library yang mendukung asinkron yang dikenal sebagai Task-based asynchronous pattern (TAP).


Pemrograman asynchronous sangat penting untuk aktivitas yang berpotensi memblokir, seperti akses web. Akses ke sumber daya web terkadang lambat atau tertunda.  


Jika aktivitas tersebut diblokir dalam proses sinkron, seluruh aplikasi harus menunggu. 


Pada proses asynchronous, aplikasi dapat melanjutkan pekerjaan lain yang tidak bergantung pada resource aplikasi atau web hingga task yang berpotensi memblokir selesai.


Semua aktivitas terkait UI biasanya berbagi satu thread. Jika ada proses yang diblokir dalam aplikasi sinkron, maka semuanya diblokir.  


Aplikasi berhenti merespons, dan mungkin menyimpulkan bahwa aplikasi gagal padahal hanya menunggu.


Saat menggunakan metode asynchronous, aplikasi terus memberikan respon kepada UI sehingga user dapat mengubah ukuran atau meminimalkan window atau dapat menutup aplikasi jika tidak ingin menunggu hingga selesai.


Sebaliknya dengan menggunakan metode sinkron, jika aplikasi belum memiliki respon user tidak dapat ber interaksi dengan aplikasi, tidak dapat menggeser window, mengubah ukuran window sampai aplikasi selesai memiliki respon.




Metode async C# mudah dalam penulisan

Kata kunci async dan await di C# adalah inti dari pemrograman async. Dengan menggunakan kedua kata kunci tersebut sudah dapat menggunakan resource di .NET Framework, .NET Core, atau Windows Runtime untuk membuat metode asynchronous hampir semudah membuat metode sinkron. 


Multithreading adalah teknik di mana prosesor (CPU) menggunakan banyak threads untuk menjalankan banyak proses secara bersamaan sehingga memungkinkan program untuk melakukan banyak task secara bersamaan, membuat program lebih efisien dan responsif.


Multi-threading adalah proses yang berisi banyak thread dalam satu proses. Setiap thread melakukan task yang berbeda, sehingga dapat menghindari antrian eksekusi kode dari baris kode yang ber urutan.


Multithreading memungkinkan setiap metode berjalan di thread terpisah. Jadi keuntungan utama dari multithreading adalah mengeksekusi banyak tugas secara bersamaan.


Penggunaan multithreading ini biasanya sangat efektif digunakan untuk eksekusi kode dari sebuah algoritma yang tidak perlu menunggu result untuk task-task selanjutnya.  Misalnya dalam hal proses antrian proses data yang sangat besar.


Pada satu pemrosesan task yang berpotensi memiliki latency yang membutuhkan waktu tunggu, maka solusi menciptakan thread baru menjadikan setiap task dapat berjalan secara independen diwaktu yang sama.


Penggunaan multithreading biasanya digunakan untuk memaksimalkan prosesor multi-core agar banyak worker bekerja secara independen.


Dalam C#, namespace System.Threading berisi banyak kelas dan Interface untuk mencapai multithreading pada sebuah aplikasi. 


Untuk mempelajari lebih lanjut tentang cara menjalankan kode new thread.


Pemrograman Asynchronous vs Multithreading

Kesalahpahaman umum yang terjadi dalam kasus penggunaannya adalah ketika pemrograman Asynchronous dan multithreading dianggap sama.


Pemrograman asynchronous adalah urutan Tugas (Task) yang tidak sinkron, sedangkan multithreading adalah tentang banyak thread yang berjalan secara paralel.


Berikut ini adalah contoh kode C# untuk membandingkan cara kerja antara pemrograman Asynchronous dan Multithreading, dengan proses yang sama dan jumlah eksekusi kode yang sama sebagai berikut:


https://www.itnews.id/2023/01/asynchronous-vs-multithreading-c-sharp.html
 Asynchronous Vs. Multithreading  C#


Download Kode.

Dari perbandingan tersebut, pada masing-masing method memiliki sekenario yang sama dalam melakukan eksekusi, yaitu memanggil url google.com dan mendapatkan text html.


Dengan kondisi perjalanan data pada jaringan yang tidak menentu, terkadang lambat atau tertunda menghasilkan total waktu yang sebetulnya relatif sama saja dalam menyelesaikan setiap eksekusi kode.


Namun perbedaanya dapat dilihat bahwa mutlithread dapat melakukan setiap eksekusi berjalan secara bersamaan.


Kesimpulan
Multithread membolehkan pemanggil (dalam hal ini user atau program aplikasi) dapat terus mengirimkan task atau request lainnya tanpa harus menunggu task sebelumnya selesai, sehingga setiap task request dapat berjalan diwaktu yang bersamaan.


Multithreading sangat efektif untuk meningkatkan kinerja program yang tidak membutuhkan urutan eksekusi karena tidak membutuhkan result dari eksekusi sebelumnya untuk melanjutkan eksekusi selanjutnya.


Misalnya digunakan untuk menangani eksekusi pemrosesan data untuk dikirim ke database dalam jumlah yang sangat besar, maka untuk memecah setiap antrian eksekusi menjadi thread baru, sehingga menghindari antrian (blocker) eksekusi dan setiap thread baru berjalan secara bersamaan.


Baca juga:  Perbedaan antara Proses dan Thread.


Referensi: