Heim >Backend-Entwicklung >C++ >Wie kann die Parallelität semaphoreslim für asynchronen Operationen in .NET steuern?
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
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!