Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Challenge: Control Parallelism in Async Tasks | Timeouts, Parallelism, and Error Handling
C# Async and Await Practice
close
Sektion 3. Kapitel 4
single

single

bookChallenge: Control Parallelism in Async Tasks

Stryg for at vise menuen

Opgave

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 desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 4
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

some-alt