Mengehadkan Paralelisme dalam C#
Apabila mengendalikan set data yang besar, selalunya perlu melakukan operasi serentak untuk meningkatkan prestasi. Walau bagaimanapun, adalah penting untuk mengawal bilangan tugasan selari untuk mengelak daripada membebankan sistem. Artikel ini meneroka cara untuk mengehadkan bilangan maksimum tugas selari dalam C# dan memastikan pemprosesan tersusun.
Mengehadkan Keselarian Maksimum
Untuk mengehadkan bilangan maksimum mesej yang diproses secara serentak, anda boleh menggunakan kaedah Parallel.ForEach digabungkan dengan pilihan MaxDegreeOfParallelism. Berikut ialah contoh:
Parallel.ForEach(messages, new ParallelOptions { MaxDegreeOfParallelism = 10}, msg => { // Logic Process(msg); });
Dalam contoh ini, MaxDegreeOfParallelism ditetapkan kepada 10, yang bermaksud hanya sehingga 10 mesej akan diproses secara serentak, tanpa mengira bilangan mesej dalam koleksi.
Pemprosesan Tertib
Susunan tugas pelaksanaan tidak dijamin apabila menggunakan selari secara lalai. Walau bagaimanapun, jika anda perlu memastikan bahawa mesej diproses dalam susunan yang sama seperti koleksi, anda boleh melaksanakan pendekatan tersuai.
Satu penyelesaian ialah membuat tugasan berasingan untuk setiap mesej dan mengurus urutan pelaksanaannya secara manual. Berikut ialah contoh ringkas:
// List of message tasks var tasks = new List<Task>(); // Add tasks to the list foreach (var msg in messages) { tasks.Add(Task.Factory.StartNew(() => { Process(msg); })); } // Execute tasks sequentially foreach (var task in tasks) { task.Wait(); }
Pendekatan ini memastikan bahawa tugasan dilaksanakan dalam susunan yang tepat seperti koleksi input.
Kesimpulan
Dengan memanfaatkan Parallel.ForEach dan MaxDegreeOfParallelism, anda boleh mengawal bilangan maksimum tugas selari dalam C#. Selain itu, anda boleh melaksanakan penyelesaian tersuai untuk memastikan pemprosesan yang teratur jika perlu. Teknik ini membantu mengoptimumkan prestasi dan mengelakkan lebihan sumber apabila berurusan dengan set data yang besar.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengawal Paralelisme dan Memastikan Pemprosesan Tertib Apabila Mengendalikan Set Data Besar dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!