Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Challenge: Control Parallelism in Async Tasks | Timeouts, Parallelism, and Error Handling
C# Async and Await Practice

bookChallenge: Control Parallelism in Async Tasks

Compito

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.

Soluzione

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 4
single

single

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

close

bookChallenge: Control Parallelism in Async Tasks

Scorri per mostrare il menu

Compito

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.

Soluzione

Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 4
single

single

some-alt