Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Challenge: Control Parallelism in Async Tasks | Timeouts, Parallelism, and Error Handling
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
C# Async and Await Practice

bookChallenge: 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).
  • Ensure that at no point are more than maxDegreeOfParallelism tasks 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, call WaitAsync on the semaphore to ensure you do not exceed the concurrency limit. After a task completes, call Release on the semaphore to allow another task to begin.
  • It is important to use Task.WhenAll to await all started tasks, guaranteeing that the method does not return until every task has finished.

Lösning

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 4
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

close

bookChallenge: 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).
  • Ensure that at no point are more than maxDegreeOfParallelism tasks 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, call WaitAsync on the semaphore to ensure you do not exceed the concurrency limit. After a task completes, call Release on the semaphore to allow another task to begin.
  • It is important to use Task.WhenAll to await all started tasks, guaranteeing that the method does not return until every task has finished.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 4
single

single

some-alt