Utas dan Pengaluran
Multithreading memungkinkan Anda untuk meningkatkan responsivitas aplikasi Anda dan, jika aplikasi Anda berjalan pada sistem multiproscessor atau multicore, tingkatkan throughputnya.
Proses dan utas
Suatu proses adalah program yang mengeksekusi. Sistem operasi menggunakan proses untuk memisahkan aplikasi yang sedang dijalankan. Suatu utas adalah unit dasar tempat sistem operasi mengalokasikan waktu prosesor. Setiap utas memiliki prioritas penjadwalan dan mempertahankan serangkaian struktur yang digunakan sistem untuk menyimpan konteks utas saat eksekusi utas dijeda. Konteks utas mencakup semua informasi yang dibutuhkan utas untuk melanjutkan eksekusi dengan lancar, termasuk set register dan tumpukan CPU utas. Beberapa utas dapat berjalan dalam konteks proses. Semua utas proses berbagi ruang alamat virtualnya. Utas dapat menjalankan bagian mana pun dari kode program, termasuk bagian yang saat ini sedang dijalankan oleh utas lain.
Catatan
.NET Framework menyediakan cara untuk mengisolasi aplikasi dalam proses dengan penggunaan domain aplikasi. (Domain aplikasi tidak tersedia di .NET Core.) Untuk informasi selengkapnya, lihat bagian Domain aplikasi dan utas dari artikel Domain aplikasi.
Secara default, program .NET dimulai dengan satu utas, sering disebut utas utama. Namun, ini dapat membuat utas tambahan untuk menjalankan kode secara paralel atau bersamaan dengan utas utama. Utas ini sering disebut utas pekerja.
Kapan menggunakan beberapa utas
Anda menggunakan beberapa utas untuk meningkatkan responsivitas aplikasi Anda dan memanfaatkan sistem multiproscessor atau multi-core untuk meningkatkan throughput aplikasi.
Pertimbangkan aplikasi desktop, di mana utas utama bertanggung jawab atas elemen antarmuka pengguna dan merespons tindakan pengguna. Gunakan utas pekerja untuk melakukan operasi yang memakan waktu yang, jika tidak, akan menempati utas utama dan membuat antarmuka pengguna tidak responsif. Anda juga dapat menggunakan utas khusus untuk komunikasi jaringan atau perangkat agar lebih responsif terhadap pesan atau peristiwa masuk.
Jika program Anda melakukan operasi yang dapat dilakukan secara paralel, total waktu eksekusi dapat dikurangi dengan melakukan operasi tersebut di utas terpisah dan menjalankan program pada sistem multiproscesor atau multi-core. Pada sistem seperti itu, penggunaan multithreading dapat meningkatkan throughput bersama dengan peningkatan responsivitas.
Cara menggunakan multithreading di .NET
Dimulai dengan .NET Framework 4, cara yang disarankan untuk menggunakan multithreading adalah menggunakan Task Parallel Library (TPL) dan Parallel LINQ (PLINQ). Untuk informasi selengkapnya, lihat Pemrograman paralel.
Baik TPL maupun PLINQ mengandalkan utas ThreadPool. Kelas System.Threading.ThreadPool menyediakan aplikasi .NET dengan kumpulan utas pekerja. Anda juga dapat menggunakan utas kumpulan utas. Untuk informasi selengkapnya, lihat Kumpulan utas terkelola.
Akhirnya, Anda dapat menggunakan kelas System.Threading.Thread yang mewakili utas terkelola. Untuk informasi selengkapnya, lihat Menggunakan utas dan pengaluran.
Beberapa utas mungkin perlu mengakses sumber daya bersama. Untuk menjaga sumber daya dalam keadaan tidak rusak dan menghindari kondisi balapan, Anda harus menyinkronkan akses utas ke sumber daya tersebut. Anda juga mungkin ingin mengoordinasikan interaksi beberapa utas. .NET menyediakan berbagai jenis yang dapat Anda gunakan untuk menyinkronkan akses ke sumber daya bersama atau mengoordinasikan interaksi utas. Untuk informasi selengkapnya, lihat Gambaran umum primitif sinkronisasi.
Menangani pengecualian dalam utas. Pengecualian yang tidak tertangani dalam utas umumnya menghentikan proses. Untuk informasi selengkapnya, lihat Pengecualian dalam utas terkelola.