Asynchrone Datenanalyse mit Parallelitätsbegrenzung
C#
Hard
async
Aufgabe «Asynchrone Datenanalyse mit Parallelitätsbegrenzung»
Entwickeln Sie eine asynchrone Konsolenanwendung, die von stdin eine Zahl N und dann N Zeilen liest, wobei jede Zeile eine ganze Zahl enthält. Die Anwendung soll jede Zahl mit der asynchronen Funktion SimulateWorkAsync(int value) verarbeiten, die eine Verzögerung (value ms) simuliert und das Quadrat der Zahl zurückgibt. Die maximale Anzahl gleichzeitig ausgeführter Aufgaben muss auf 3 begrenzt werden. Geben Sie die Ergebnisse in der Reihenfolge des Abschlusses der Aufgaben aus (nicht in der Reihenfolge der Eingabe). Wenn eine Aufgabe mit einer Ausnahme abgeschlossen wird (z. B. bei value < 0), soll die Anwendung den Abschluss aller Aufgaben abwarten und "Error" ausgeben und beenden. Verwenden Sie SemaphoreSlim zur Steuerung der Parallelität.
Eingabeformat
Die erste Zeile ist eine ganze Zahl N (1 ≤ N ≤ 100). Dann folgen N Zeilen, jede enthält eine ganze Zahl von -10 bis 10.
Ausgabeformat
Geben Sie für jedes erfolgreiche Ergebnis das Quadrat der Zahl in einer separaten Zeile in der Reihenfolge des Abschlusses der Aufgaben aus. Wenn ein Fehler auftritt, geben Sie nur "Error" aus.
Beispiele
Beispiel 1
EINGABE
2
5
2
AUSGABE
4
25
Beispiel 2
EINGABE
2
https://httpbin.org/status/200
https://httpbin.org/status/404
5000
AUSGABE
Error
Beispiel 3
EINGABE
2
-1
4
AUSGABE
Error
main.cs