Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Hadkan Pelaksanaan Tugasan Serentak kepada 10 menggunakan Tugasan C#?

Bagaimanakah Saya Boleh Hadkan Pelaksanaan Tugasan Serentak kepada 10 menggunakan Tugasan C#?

Patricia Arquette
Lepaskan: 2024-12-30 06:52:10
asal
347 orang telah melayarinya

How Can I Limit Concurrent Task Execution to 10 using C# Tasks?

Pengurusan Concurrency dengan Tugasan: Mengehadkan Pelaksanaan Serentak

Dalam senario anda, anda menyasarkan untuk menjalankan satu set 100 tugasan serentak, tetapi hanya membenarkan maksimum 10 tugasan untuk dilaksanakan pada bila-bila masa. Ini melibatkan pengurusan konkurensi secara berkesan untuk memastikan pelaksanaan tugas yang betul dan penggunaan sumber.

Untuk menangani keperluan ini menggunakan Tasks, anda boleh menggunakan pendekatan berikut:

// Define a SemaphoreSlim to limit concurrent tasks to 10
SemaphoreSlim maxThread = new SemaphoreSlim(10);

// Iterate through the tasks
for (int i = 0; i < 115; i++)
{
    // Wait for the SemaphoreSlim to allow a new task to execute
    maxThread.Wait();

    // Create a new task and schedule it
    Task.Factory.StartNew(() =>
    {
        // Perform the task's operation
    }, TaskCreationOptions.LongRunning)

    // Release the SemaphoreSlim when the task completes
    .ContinueWith((task) => maxThread.Release());
}
Salin selepas log masuk

Dalam pelaksanaan ini:

  1. SemaphoreSlim bernama maxThread dicipta dengan kiraan awal 10, mewakili bilangan maksimum tugas serentak dibenarkan.
  2. Gelung berulang melalui 115 tugasan.
  3. Dalam setiap lelaran, kod menunggu SemaphoreSlim memperoleh permit, memastikan tidak lebih daripada 10 tugasan dijalankan serentak.
  4. Setelah permit diperoleh, tugas baharu dibuat menggunakan Task.Factory.StartNew. Pilihan TaskCreationOptions.LongRunning menunjukkan bahawa tugasan boleh mengambil masa yang lebih lama untuk dilaksanakan.
  5. Sambungan ditambahkan pada tugasan menggunakan ContinueWith. Apabila tugasan selesai, kesinambungan mengeluarkan permit pada SemaphoreSlim, membenarkan satu lagi tugas menunggu untuk mula dilaksanakan.

Pendekatan ini memastikan bahawa hanya 10 tugasan dijalankan pada bila-bila masa, mengurus bersamaan dengan berkesan dan menghalang sumber kelaparan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Hadkan Pelaksanaan Tugasan Serentak kepada 10 menggunakan Tugasan 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan