Apa itu kumpulan utas? Mengapa menggunakan kumpulan utas? Bagaimana cara menggunakan kumpulan utas?
1. Apa itu kumpulan utas?
Kelas ThreadPool .NET Framework menyediakan kumpulan utas yang dapat digunakan untuk menjalankan tugas, mengirim item kerja, menangani I/O asinkron, menunggu atas nama utas lain, dan menangani pengatur waktu. Jadi apa itu kumpulan utas? Kumpulan utas sebenarnya adalah "kumpulan" yang menyimpan objek utas, dan menyediakan beberapa metode dasar, seperti mengatur jumlah utas minimum/maksimum dalam kumpulan, mengantri metode yang akan dieksekusi, dll. ThreadPool adalah kelas statis, sehingga dapat digunakan secara langsung tanpa membuat objek.
2. Mengapa menggunakan kumpulan benang? Apa manfaatnya?
Situs web resmi Microsoft mengatakan hal berikut: Banyak aplikasi membuat sejumlah besar utas yang tertidur, menunggu peristiwa terjadi. Ada juga banyak utas yang mungkin masuk ke hibernasi hanya untuk bangun secara berkala untuk melakukan jajak pendapat untuk informasi negara bagian yang diubah atau diperbarui. Kumpulan utas, memungkinkan Anda menggunakan utas secara lebih efisien melalui kumpulan utas pekerja yang dikelola oleh sistem.
Sederhananya, setiap utas baru perlu menempati ruang memori dan sumber daya lainnya, dan dengan begitu banyak utas baru, banyak dari mereka tidak aktif atau menunggu sumber daya dirilis. Ada banyak utas yang hanya melakukan beberapa pekerjaan kecil secara berkala, seperti menyegarkan data, dll., yang terlalu boros untuk digambar, dan jarang banyak utas meledak dalam pemrograman aktual dan kemudian berakhir dalam waktu singkat. Oleh karena itu, konsep kumpulan utas diusulkan. Jika aplikasi membuat permintaan lain ke kumpulan utas, utas dalam status tertunda diaktifkan dan menjalankan tugas tanpa membuat utas baru, yang menghemat banyak overhead. Sistem akan secara otomatis menghancurkan utas hanya ketika jumlah utas mencapai jumlah utas maksimum. Oleh karena itu, menggunakan kumpulan utas dapat menghindari biaya pembuatan dan penghancuran yang besar, memiliki kinerja dan stabilitas yang lebih baik, dan kedua, pengembang dapat fokus pada tugas lain dengan menyerahkan utas ke manajemen sistem.
3. Bagaimana cara menggunakan kumpulan utas?
Faktanya, kumpulan utas sangat mudah digunakan, sebagai berikut
a. Atur kumpulan utas maksimum dan minimum:
ThreadPool.SetMaxThreads (int workerThreads, int completionPortThreads) Atur jumlah permintaan untuk kumpulan utas yang dapat aktif secara bersamaan. Semua permintaan yang lebih besar dari jumlah ini akan tetap mengantri hingga utas kumpulan utas tersedia. Anda juga dapat mengatur jumlah minimum utas.
b. Tambahkan tugas ke kumpulan utas:
ThreadPool.QueueUserWorkItem(WaitCallback baru(nama metode));
atau ThreadPool.QueueUserWorkItem(new WaitCallback(nama metode), parameter);
Misalnya, jika maksimal 5 utas dalam kumpulan utas menjalankan metode 60 kali, total gaji selama 5 tahun adalah sebagai berikut:
Jika Anda tidak menggunakan pengumpulan utas, Anda mungkin harus membuka 60 utas untuk menjalankan metode Run() secara asinkron, yang merupakan pemborosan sumber daya ruang. Sekarang kami menggunakan hingga 5 utas, yang dapat dieksekusi dalam 1 detik, dan efisiensi serta kinerjanya sangat bagus.
|