Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menjalankan Banyak Tugasan Secara Berurutan dengan Bilangan Tugasan Serentak yang Terhad dalam .NET?
Menjalankan Set Tugasan Secara Berurutan dengan Had Tugasan
Andaikan anda mempunyai senario di mana anda perlu melaksanakan sejumlah besar tugas (cth. , 100), tetapi anda ingin mengehadkan bilangan tugas yang dijalankan serentak (cth., 10). Masalah ini boleh ditangani dengan cekap menggunakan kelas 'Task' yang diperkenalkan dalam .NET Framework 4.0.
Dalam senario yang diberikan, kita boleh menggunakan kelas 'SemaphoreSlim' untuk mengawal bilangan maksimum tugasan yang dijalankan serentak. 'SemaphoreSlim' membolehkan anda mencipta objek semaphore yang boleh mengehadkan bilangan operasi serentak.
Berikut ialah contoh pelaksanaan yang menunjukkan cara untuk mencapai tingkah laku yang anda inginkan:
using System.Threading.Tasks; using System.Threading; class Program { static void Main() { // Create a SemaphoreSlim object to limit the number of concurrent tasks to 10 SemaphoreSlim maxThread = new SemaphoreSlim(10); // Create 115 tasks with each task performing a specific action for (int i = 0; i < 115; i++) { // Acquire a permit from the SemaphoreSlim object, blocking if the limit is reached maxThread.Wait(); // Schedule a new task Task.Factory.StartNew(() => { // Perform your desired task here }, TaskCreationOptions.LongRunning) // Once the task is complete, release the permit back to the SemaphoreSlim object .ContinueWith((task) => maxThread.Release()); } } }
Dalam pelaksanaan ini , setiap tugasan memperoleh permit daripada objek 'SemaphoreSlim' sebelum ia boleh dilaksanakan. Jika bilangan maksimum permit (10 dalam kes ini) telah diperoleh, semaphore menyekat tugasan berikutnya daripada memperoleh permit sehingga permit dikeluarkan.
Dengan menggunakan pendekatan ini, anda boleh melaksanakan satu set tugasan secara berurutan, memastikan bahawa hanya bilangan tugasan yang telah ditetapkan berjalan serentak. Setelah semua tugasan selesai, kaedah 'Utama' akan keluar, menunjukkan tamatnya program.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjalankan Banyak Tugasan Secara Berurutan dengan Bilangan Tugasan Serentak yang Terhad dalam .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!