Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 26065|Jawab: 2

[Sumber] Analisis singkat tentang penggunaan kumpulan utas .net/C# ThreadPool

[Salin tautan]
Diposting pada 21/06/2017 09.43.20 | | | |
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.





Mantan:Kode Layar Penuh Peta Baidu (kode layar penuh div)
Depan:Pemberitahuan pemrosesan akses pemblokiran URL ilegal Alibaba Cloud
 Tuan tanah| Diposting pada 21/06/2017 09.47.12 |

Kumpulan benang memiliki keunggulan tersebut:

1. Dalam multi-threading, kumpulan utas dapat mengurangi jumlah utas yang kami buat, dan secara wajar menggunakan kembali utas di kumpulan utas. Karena utas dengan utas dalam kumpulan utas dalam keadaan menunggu untuk ditetapkan.

2. Tidak perlu mengelola dan memelihara utas dengan masa pakai pendek, tidak perlu mengalokasikan sumber daya untuk mereka saat dibuat, dan melepaskan sumber daya setelah mereka menyelesaikan tugas mereka.

3. Kumpulan benang akan mengoptimalkan benang di kolam sesuai dengan karakteristik sistem saat ini.

Kekurangan kumpulan benang:

Setelah kita menyerahkan tugas ke kumpulan utas untuk diselesaikan, kita tidak dapat mengontrol prioritas utas, mengatur beberapa nama utas, dan informasi lainnya. [Tapi kita dapat menambahkan layer untuk menyempurnakannya sebelum memasukkannya ke dalam kumpulan utas]

Diposting pada 06/12/2017 11.28.49 |
Tandai terlebih dahulu, sehingga Anda dapat belajar nanti
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com