Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Hadkan Paralelisme Semasa Memproses Mesej dalam C#?

Bagaimanakah Saya Boleh Hadkan Paralelisme Semasa Memproses Mesej dalam C#?

DDD
Lepaskan: 2024-12-30 17:55:10
asal
789 orang telah melayarinya

How Can I Limit Parallelism When Processing Messages in C#?

Menghadkan Keselarian Maksimum dalam Pemprosesan Mesej dengan C#

Apabila memproses koleksi item yang besar secara selari, selalunya wajar untuk mengawal bilangan maksimum tugas yang boleh dijalankan serentak. Ini membantu mengoptimumkan penggunaan sumber dan menghalang sistem yang membebankan.

Menggunakan kod sampel yang disediakan, yang berpusing melalui koleksi 1,000 mesej input dan memulakan tugas untuk setiap satu, sukar untuk meramalkan bilangan sebenar mesej yang akan diproses secara selari. Walau bagaimanapun, pada pemproses empat teras biasa, berbilang mesej mungkin akan diproses secara serentak.

Menghadkan Keselarian Maksimum

Untuk mengehadkan bilangan maksimum mesej yang diproses pada satu masa , kaedah Parallel.ForEach dengan pilihan MaxDegreeOfParallelism boleh digunakan. Pilihan ini menentukan bilangan maksimum benang yang boleh digunakan untuk pelaksanaan selari. Sebagai contoh, kod di bawah mengehadkan bilangan tugas selari kepada 10:

Parallel.ForEach(messages, new ParallelOptions { MaxDegreeOfParallelism = 10 },
msg =>
{
    // logic
    Process(msg);
});
Salin selepas log masuk

Mengekalkan Urutan

Dalam kod di atas, mesej mungkin tidak semestinya diproses dalam susunan yang sama di mana ia muncul dalam koleksi. Untuk memastikan urutan yang ketat, kaedah sambungan AsParallel boleh digunakan:

var orderedMessages = messages.AsParallel();
Parallel.For(0, orderedMessages.Count(), i =>
{
    Process(orderedMessages[i]);
});
Salin selepas log masuk

Dalam kod ini, kaedah Parallel.For mencipta gelung yang berulang ke atas koleksi secara selari, tetapi dalam setiap lelaran, mesej itu diproses diakses secara berurutan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Hadkan Paralelisme Semasa Memproses Mesej dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan