Mengehadkan Tugasan Serentak dalam C#
Dalam pengaturcaraan berbilang benang dan tak segerak, mengawal bilangan tugas selari boleh meningkatkan prestasi dan mengekalkan kestabilan. Soalan ini meneroka cara mengehadkan bilangan maksimum tugas serentak dalam C#.
Mengehadkan Keselarasan
Blok kod yang disediakan mencontohkan penciptaan tugas baharu untuk setiap mesej input . Pendekatan ini boleh membawa kepada penggunaan sumber yang berlebihan jika bilangan mesej adalah besar. Untuk mengehadkan keselarasan, pertimbangkan untuk menggunakan Parallel.ForEach dengan MaxDegreeOfParallelism.
Parallel.ForEach(messages, new ParallelOptions { MaxDegreeOfParallelism = 10}, msg => { // logic Process(msg); });
Dengan menyatakan MaxDegreeOfParallelism sebagai 10, sehingga 10 mesej akan diproses serentak, mengurangkan ketegangan sumber.
>
Walau bagaimanapun, pendekatan ini tidak menjamin pemprosesan mesej dalam urutan yang sama seperti koleksi asal. Untuk memastikan susunan, gunakan SequentialQuery daripada perpustakaan LINQ Selari:
var processedMessages = messages.AsParallel() .AsOrdered() // Preserves order .Select(msg => Process(msg)) .ToList(); // Forces execution
Ini memastikan mesej diproses dalam susunan yang sama seperti koleksi input, sambil masih memanfaatkan keselarian untuk kecekapan.
Atas ialah kandungan terperinci Bagaimana untuk Hadkan Tugasan Serentak dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!