Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah SemaphoreSlim dan Tasks Boleh Digunakan untuk Menguruskan Tugasan Serentak dengan Cekap?
Menguruskan Tugasan Serentak dengan SemaphoreSlim dan Tugasan
Untuk mengendalikan senario dengan cekap di mana anda perlu mengehadkan bilangan tugasan yang dijalankan serentak, pertimbangkan untuk menggunakan gabungan SemaphoreSlim dan Tasks, pendekatan yang mematuhi amalan terbaik dan mengelakkan kemungkinan perangkap dikaitkan dengan ThreadPool.QueueUserWorkItem().
SemaphoreSlim untuk Mengehadkan Konkurensi:
SemaphoreSlim ialah alat yang berkuasa untuk mengawal konkurensi dalam .NET. Ia membolehkan anda menentukan bilangan maksimum token selamat benang (permit) yang boleh dipegang serentak. Ini adalah penting dalam senario kami, di mana kami ingin mengehadkan bilangan tugasan yang dijalankan pada bila-bila masa.
Tugas untuk Pelaksanaan Tugas:
Tugas mewakili operasi tak segerak yang boleh dijadualkan dan diuruskan secara bebas daripada urutan panggilan. Mereka menyediakan cara yang lebih fleksibel dan cekap untuk melaksanakan tugas berbanding dengan ThreadPool.QueueUserWorkItem().
Menggabungkan SemaphoreSlim dan Tugasan:
Untuk mencapai matlamat anda, ikuti langkah ini :
Contoh Kod:
SemaphoreSlim maxThread = new SemaphoreSlim(10); for (int i = 0; i < 115; i++) { maxThread.Wait(); Task.Factory.StartNew(() => { // Your task code here }, TaskCreationOptions.LongRunning) .ContinueWith((task) => maxThread.Release()); }
Dalam contoh ini:
Dengan menggunakan pendekatan ini, anda boleh mengurus satu set tugasan dengan berkesan, mengehadkan bilangan tugasan yang dijalankan serentak kepada nilai yang ditentukan, sambil turut memanfaatkan faedah Tugasan untuk pelaksanaan tugas tak segerak.
Atas ialah kandungan terperinci Bagaimanakah SemaphoreSlim dan Tasks Boleh Digunakan untuk Menguruskan Tugasan Serentak dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!