Heim >Backend-Entwicklung >C++ >Wie kann die Parallelität semaphoreslim für asynchronen Operationen in .NET steuern?

Wie kann die Parallelität semaphoreslim für asynchronen Operationen in .NET steuern?

Linda Hamilton
Linda HamiltonOriginal
2025-02-01 21:01:14454Durchsuche

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

begrenzende gleichzeitige asynchrone Aufgaben in .NET

Umgang mit zahlreichen gleichzeitigen asynchronen Vorgängen erfordert eine sorgfältige Verwaltung, um eine Überlastung der Systeme zu verhindern. Der Beispielcode initiiert über 1000 Webanforderungen gleichzeitig, ein potenzielles Rezept für die Erschöpfung von Ressourcen.

Die in .NET 4.5 Beta eingeführte Klasse bietet eine elegante Lösung zur Kontrolle der Parallelität mit seiner SemaphoreSlim -Methode. Dies ermöglicht effizientes asynchrones Operation: 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>
Durch Initialisieren von

mit einer Anzahl von 20 gewährleisten wir maximal 20 gleichzeitige Anfragen. SemaphoreSlim pausiert die Ausführung, bis eine Genehmigung verfügbar ist. Entscheidend ist, dass der WaitAsync -Blocker die Erlaubnis freigesetzt wird, auch wenn Ausnahmen auftreten. Die finally -Anweisung sorgt für eine ordnungsgemäße Entsorgung des using. HttpClient

Während alternative Ansätze, wie z. B. benutzerdefinierte Aufgabenplaner, existieren, bieten

eine kurze und effektive Methode zur Verwaltung asynchroner Parallelität. Die MSDN -Dokumentation enthält weitere Details zu diesen alternativen Techniken. SemaphoreSlim

Das obige ist der detaillierte Inhalt vonWie kann die Parallelität semaphoreslim für asynchronen Operationen in .NET steuern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn