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

bookChallenge: Control Parallelism in Async Tasks

Oppgave

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

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 4
single

single

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Suggested prompts:

Can you explain this in simpler terms?

What are the main points I should remember?

Can you give me an example?

close

bookChallenge: Control Parallelism in Async Tasks

Sveip for å vise menyen

Oppgave

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 desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 4
single

single

some-alt