Challenge: Control Parallelism in Async Tasks
Uppgift
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ösning
Var allt tydligt?
Tack för dina kommentarer!
Avsnitt 3. Kapitel 4
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Fantastiskt!
Completion betyg förbättrat till 5.56
Challenge: Control Parallelism in Async Tasks
Svep för att visa menyn
Uppgift
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ösning
Var allt tydligt?
Tack för dina kommentarer!
Avsnitt 3. Kapitel 4
single