Gleichzeitige Aufgaben mit SemaphoreSlim und Tasks verwalten
Um Szenarios, in denen Sie die Anzahl der gleichzeitig ausgeführten Aufgaben begrenzen müssen, effizient zu bewältigen, sollten Sie die Verwendung von a in Betracht ziehen Kombination aus SemaphoreSlim und Tasks, ein Ansatz, der sich an Best Practices hält und mögliche damit verbundene Fallstricke vermeidet ThreadPool.QueueUserWorkItem().
SemaphoreSlim zur Begrenzung der Parallelität:
SemaphoreSlim ist ein leistungsstarkes Tool zur Steuerung der Parallelität in .NET. Sie können damit eine maximale Anzahl Thread-sicherer Token (Genehmigungen) angeben, die gleichzeitig gehalten werden können. Dies ist in unserem Szenario von entscheidender Bedeutung, in dem wir die Anzahl der gleichzeitig ausgeführten Aufgaben begrenzen möchten.
Aufgaben für die Aufgabenausführung:
Aufgaben stellen asynchrone Vorgänge dar, die kann unabhängig vom aufrufenden Thread geplant und verwaltet werden. Sie bieten im Vergleich zu ThreadPool.QueueUserWorkItem() eine flexiblere und effizientere Möglichkeit, Aufgaben auszuführen.
Kombination von SemaphoreSlim und Tasks:
Um Ihr Ziel zu erreichen, befolgen Sie diese Schritte :
Beispielcode:
SemaphoreSlim maxThread = new SemaphoreSlim(10); for (int i = 0; i < 115; i++) { maxThread.Wait(); Task.Factory.StartNew(() => { // Your task code here }, TaskCreationOptions.LongRunning) .ContinueWith((task) => maxThread.Release()); }
In diesem Beispiel:
Mit diesem Ansatz können Sie kann eine Reihe von Aufgaben effektiv verwalten, indem die Anzahl der gleichzeitig ausgeführten Aufgaben auf den angegebenen Wert begrenzt wird und gleichzeitig die Vorteile von Aufgaben für die asynchrone Aufgabenausführung genutzt werden.
Das obige ist der detaillierte Inhalt vonWie können SemaphoreSlim und Tasks verwendet werden, um gleichzeitige Aufgaben effizient zu verwalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!