Melaksanakan Tugasan Serentak dengan Benang Terhad
Masalah:
Andaikan anda mempunyai satu set tugasan yang mesti dilaksanakan secara berurutan, dengan hanya maksimum X tugasan dijalankan pada satu masa. Secara tradisinya, ThreadPool.QueueUserWorkItem() telah digunakan untuk tugasan sedemikian, tetapi ia kini dianggap sebagai pendekatan suboptimum.
Penyelesaian Menggunakan Tugasan:
Untuk mencapai had konkurensi ini menggunakan Tugas, kita boleh menggunakan objek SemaphoreSlim untuk mengurus bilangan utas yang tersedia. Berikut ialah coretan kod yang menunjukkan pendekatan:
SemaphoreSlim maxThread = new SemaphoreSlim(10); for (int i = 0; i < 115; i++) { maxThread.Wait(); Task.Factory.StartNew(() => { // Your task implementation }, TaskCreationOptions.LongRunning) .ContinueWith((task) => maxThread.Release()); }
Begini cara kod berfungsi:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Pelbagai Tugas serentak dengan Bilangan Benang Terhad Menggunakan C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!