Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Introduction to Concurrency in C# - Async and Parallelism
Rating: 4.5 out of 5(303 ratings)
1,827 students

Introduction to Concurrency in C# - Async and Parallelism

Learn to develop scalable and fast applications using concurrency
Created byFelipe Gavilán
Last updated 1/2025
English

What you'll learn

  • Use asynchronous programming in C#
  • Improve the speed of your programs with parallelism
  • Patterns and antipatterns of asynchronous programming and parallelism

Course content

6 sections77 lectures5h 5m total length
  • Introduction1:09
  • What is Concurrency?4:45

    Explore how concurrency enables doing several tasks at the same time to improve efficiency. See how parallelism uses multiple threads and asynchronous programming to serve more web requests concurrently.

  • Introduction to Parallel Programming4:09

    explain parallel programming divides work and runs tasks simultaneously to save time. discover data and task parallelism, and how the task parallel library and plinq enable parallel processing of arrays.

  • Introduction to Asynchronous Programming3:15
  • CPU vs I/O Bound Operations2:25
  • Sequential Programming, Concurrency, Multi-threading, Parallelism, Multi-tasking3:47

    Explore sequential programming and the basics of concurrency. Clarify how multi threading, parallelism, and multitasking relate, including when threading does not imply parallelism and how an operating system schedules threads.

  • Determinism vs Non-Determinism2:32
  • Preparing the Development Environment2:18

    Install Visual Studio and configure the desktop development workload to prepare for concurrency work with the wind farms framework. Use the community edition if needed and consider cross-platform options.

  • Source Code of the Course
  • Conclusion1:47

    Explore how concurrency uses parallel and asynchronous programming to run tasks simultaneously, improve vertical scalability and user interface responsiveness, and distinguish CPU-bound from I/O-bound work.

Requirements

  • Knows the basics of C# (knows about loops, methods, classes)

Description

In this course you will learn how to use asynchronous programming and parallelism in C #.

We will look at both patterns and antipatterns of concurrency. That is, we will see what things we should do, but we will also see what things we should not do.

With asynchronous programming we can:

  • Run a set of I / O tasks at the same time

  • Prevent the UI of our applications from freezing

  • Scale up our ASP.NET and ASP.NET Core applications

  • Cancel tasks so that the user does not have to wait for their completion

  • Implement generic retry logic

  • Create asynchronous streams

With parallel programming we can:

  • Accelerate the execution of certain algorithms

  • Apply transformations to a set of images in parallel

  • Use synchronization mechanisms to avoid race conditions

  • Define the maximum degree of parallelism

  • Configure instances of a class by threads

  • Use LINQ in parallel

We'll also see:

  • Determinism vs Non-Determinism

  • Handling errors in asynchronous programming

  • Using Task.WhenAll to wait for the execution of multiple tasks

  • Reporting progress of multiples tasks

  • Retry pattern for handling momentaneous errors

  • Understanding and consuming ValueTask

  • Using Asynchronous streams

  • What does it mean for an app to be deadlocked

We will learn all of this in this course!

Who this course is for:

  • C# developers who want to use asynchronous programming and parallelism in an effective way