Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah semaphoreslim mengawal konvensyen untuk operasi async dalam .net?

Bagaimanakah semaphoreslim mengawal konvensyen untuk operasi async dalam .net?

Linda Hamilton
Lepaskan: 2025-02-01 21:01:14
asal
411 orang telah melayarinya

How Can SemaphoreSlim Control Concurrency for Async Operations in .NET?

Mengehadkan Tugas Asynchronous Serentat dalam .NET

Mengendalikan banyak operasi tak segerak serentak memerlukan pengurusan yang teliti untuk mencegah beban sistem. Kod contoh memulakan lebih daripada 1000 permintaan web secara serentak, resipi yang berpotensi untuk keletihan sumber.

Kelas

, yang diperkenalkan dalam .NET 4.5 beta, menyediakan penyelesaian yang elegan untuk mengawal kesesuaian dengan kaedah SemaphoreSlim. Ini membolehkan pengendalian operasi tak segerak yang cekap: WaitAsync

<code class="language-csharp">public async Task MyOuterMethod()
{
    var semaphore = new SemaphoreSlim(20); // Maximum 20 concurrent requests
    var tasks = new List<Task>();

    foreach (var url in urls)
    {
        await semaphore.WaitAsync(); // Acquire a permit

        tasks.Add(Task.Run(async () =>
        {
            try
            {
                using (var client = new HttpClient()) // Use using statement for proper disposal
                {
                    var html = await client.GetStringAsync(url);
                    // Process the result
                }
            }
            finally
            {
                semaphore.Release(); // Release the permit
            }
        }));
    }

    await Task.WhenAll(tasks); // Wait for all tasks to complete
}</code>
Salin selepas log masuk
Dengan memulakan

dengan kiraan 20, kami memastikan maksimum 20 permintaan serentak. SemaphoreSlim berhenti pelaksanaan sehingga permit disediakan. Secara kritis, blok WaitAsync menjamin permit dilepaskan, walaupun pengecualian berlaku. Pernyataan finally memastikan pelupusan yang betul using. HttpClient

Walaupun pendekatan alternatif, seperti penjadual tugas tersuai, ada,

menawarkan kaedah ringkas dan berkesan untuk menguruskan kesesuaian tak segerak. Dokumentasi MSDN memberikan butiran lanjut mengenai teknik alternatif ini. SemaphoreSlim

Atas ialah kandungan terperinci Bagaimanakah semaphoreslim mengawal konvensyen untuk operasi async dalam .net?. 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