Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Multithreading dapat memungkinkan Anda untuk meningkatkan responsivitas aplikasi Anda dan, jika aplikasi Anda berjalan pada sistem multiprosesor atau multi-inti, tingkatkan throughput-nya.
Proses dan utas
Proses adalah program eksekusi. Sistem operasi menggunakan proses untuk memisahkan aplikasi yang sedang dijalankan. 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 tanpa hambatan, termasuk kumpulan register CPU dan tumpukan memori 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.
Nota
.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 mengeksekusi kode secara paralel atau bersamaan dengan utas utama. Utas ini sering disebut sebagai utas pekerja.
Kapan menggunakan beberapa benang atau utas
Anda menggunakan beberapa utas untuk meningkatkan responsivitas aplikasi dan memanfaatkan sistem multiprosesor atau multi-core untuk meningkatkan throughput aplikasi Anda.
Pertimbangkan aplikasi desktop, di mana utas utama bertanggung jawab atas elemen antarmuka pengguna dan merespons tindakan pengguna. Gunakan thread pekerja untuk melakukan operasi yang memakan waktu yang, jika tidak, akan menempati thread 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 multiprosesor atau multi-inti. 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 dengan menggunakan Task Parallel Library (TPL) dan Parallel LINQ (PLINQ). Untuk informasi selengkapnya, lihat Pemrograman paralel.
Baik TPL maupun PLINQ mengandalkan ThreadPool utas. Kelas System.Threading.ThreadPool menyediakan kumpulan thread pekerja untuk aplikasi .NET. Anda juga dapat menggunakan thread pool. Untuk informasi selengkapnya, lihat Kumpulan Thread Terkelola.
Akhirnya, Anda dapat menggunakan kelas System.Threading.Thread yang mewakili utas terkelola. Untuk informasi selengkapnya, lihat Menggunakan utas dan pemrosesan utas.
Beberapa thread mungkin perlu mengakses sumber daya bersama. Untuk menjaga sumber daya dalam keadaan tidak rusak dan menghindari kondisi perlombaan, Anda harus menyinkronkan akses utas ke sumber daya ini. Anda mungkin juga ingin mengoordinasikan interaksi antara beberapa thread. .NET menyediakan berbagai jenis yang dapat Anda gunakan untuk menyinkronkan akses ke sumber daya bersama atau mengoordinasikan interaksi antar utas. Untuk informasi selengkapnya, lihat Gambaran umum primitif sinkronisasi.
Menangani pengecualian dalam utas. Pengecualian yang tidak tertangani dalam utas umumnya mengakhiri proses. Untuk informasi selengkapnya, lihat Pengecualian di utas terkelola.