Challenge: Control Parallelism in Async Tasks
Aufgabe
Swipe to start coding
Your goal is to implement an asynchronous method that processes a list of asynchronous tasks in parallel, while limiting the number of tasks that run at the same time.
- The method should accept two parameters:
- A list of asynchronous task factories (
Func<Task>), where each factory returns a task when invoked. - An integer representing the maximum number of concurrent operations (
maxDegreeOfParallelism).
- A list of asynchronous task factories (
- Ensure that at no point are more than
maxDegreeOfParallelismtasks running in parallel. - Every task factory in the list must be started and awaited, so that all tasks complete before the method returns.
- To control the number of concurrently running tasks, use a
SemaphoreSlim. Before starting a new task, callWaitAsyncon the semaphore to ensure you do not exceed the concurrency limit. After a task completes, callReleaseon the semaphore to allow another task to begin. - It is important to use
Task.WhenAllto await all started tasks, guaranteeing that the method does not return until every task has finished.
Lösung
War alles klar?
Danke für Ihr Feedback!
Abschnitt 3. Kapitel 4
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Großartig!
Completion Rate verbessert auf 5.56
Challenge: Control Parallelism in Async Tasks
Swipe um das Menü anzuzeigen
Aufgabe
Swipe to start coding
Your goal is to implement an asynchronous method that processes a list of asynchronous tasks in parallel, while limiting the number of tasks that run at the same time.
- The method should accept two parameters:
- A list of asynchronous task factories (
Func<Task>), where each factory returns a task when invoked. - An integer representing the maximum number of concurrent operations (
maxDegreeOfParallelism).
- A list of asynchronous task factories (
- Ensure that at no point are more than
maxDegreeOfParallelismtasks running in parallel. - Every task factory in the list must be started and awaited, so that all tasks complete before the method returns.
- To control the number of concurrently running tasks, use a
SemaphoreSlim. Before starting a new task, callWaitAsyncon the semaphore to ensure you do not exceed the concurrency limit. After a task completes, callReleaseon the semaphore to allow another task to begin. - It is important to use
Task.WhenAllto await all started tasks, guaranteeing that the method does not return until every task has finished.
Lösung
War alles klar?
Danke für Ihr Feedback!
Abschnitt 3. Kapitel 4
single