Challenge: Control Parallelism in Async Tasks
Tarefa
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.
Solução
Tudo estava claro?
Obrigado pelo seu feedback!
Seção 3. Capítulo 4
single
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Suggested prompts:
Can you explain this in simpler terms?
What are the main points I should remember?
Can you give me an example?
Incrível!
Completion taxa melhorada para 5.56
Challenge: Control Parallelism in Async Tasks
Deslize para mostrar o menu
Tarefa
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.
Solução
Tudo estava claro?
Obrigado pelo seu feedback!
Seção 3. Capítulo 4
single