Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Hadkan Tugasan Serentak dalam C#?

Bagaimana untuk Hadkan Tugasan Serentak dalam C#?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-29 04:08:10475semak imbas

How to Limit Concurrent Tasks in C#?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn