Async Expert
online course - English version
Your path to excel at async in .NET

You cannot buy the course now. Sign up to receive messages for future Async Experts!

Course description

While .NET environment was receiving another tools connected with concurrency and async programming, reception and feelings were mixed. On one hand the received opportunities were amazing. On the the other, it created the necessity to learn and use totally different elements of the language as well as mechanisms included in .NET itself...

While training engineers during internal and opened trainings, discussing during conferences and browsing the last Dotnetos survey records - in which almost 500 persons from all over the world took part - we’ve noticed that async programming and concurrency are very important for you. This is a topic which engineers related to .NET want to learn. We ourselves share that opinion. Today programming in .NET is almost impossible without understanding of concurrency and async-await technique.

To help you gain that knowledge and understand the basics and rules of async world and concurrency we prepared that Async Expert online course. Async Expert is 10 solid weeks of learning through which we will guide you from the async basics to sync and concurrency collections. To allow you to verify possessed knowledge we prepared suitable houseworks. 3 LIVE meetings with our mentors (Marc Gravel, Daniel Marbach, Steve Cleary) during which they will help to answer all your extra questions are an additional bonus. Everything will be completed with communication with us via the course platform.

You cannot buy the course now. Sign up to receive messages for future Async Experts!

Course agenda



  1. Course overview
  2. BenchmarkDotNet basics
  3. Demo:
  4. Demo: ConcurrencyVisualizer
  5. Demo: Parallel Stacks/Tasks
  6. Homework


  1. Threads
  2. ThreadPool
  3. Demo: ThreadPool use with different API
  4. Demo: ThreadPool.BindHandle usage
  5. Homework

Async basics

  1. Task API
  2. Async-await foundations (with demos)
  3. Async eliding
  4. ValueTask
  5. Task API and async
  6. Homework

Async II

  1. Execution, contexts, scheduler
  2. Demo: let’s deadlock it!
  3. Demo: your own SynchronizationContext
  4. Demo: Scheduler Azure Durable Functions
  5. Sync vs async
  6. Demo: utilizing legacy synchronous APIs
  7. Fire and forget
  8. Demo: asynchronous logging
  9. TaskCompletionSource
  10. Demo: wrapping callback-based APIs (Event-Based Asynchronous Pattern)
  11. Awaitables
  12. Demo: await await await false;
  13. Locals
  14. Demo: StringBuilder i ThreadLocal
  15. Demo: scopes with AsyncLocal
  16. Demo: floating the state
  17. Homework

Async III

  1. Tasks aggregations
  2. Demo: awaiting in task completion order
  3. Demo: Parallel.For with async vs Task.WhenAll
  4. Demo: testing with TaskCompletionSource and Task.WhenAny
  5. Task cancellation with CancellationToken
  6. Demo: Timeout with WhenAny
  7. IAsyncDiposable
  8. IAsyncEnumerable
  9. Demo: gRPC with IAsyncEnumerable
  10. Demo: New SQL client
  11. Homework

Low-level concurrency

  1. Hardware
  2. volatile
  3. Demo: Epoch programming in ConcurrentQueue
  4. Interlocked
  5. Demo: simple pool with Interlocked.Exchange
  6. Barriers and alignment
  7. Demo: range reservation with Aeron.NET and Interlocked.CompareExchange
  8. Homework


  1. Exclusive locking
  2. Demo: decompiling lock
  3. Demo: non-blocking usage of Monitor.TryEnter
  4. Demo: task throttling with Task and SemaphoreSlim
  5. ReaderWriterLock
  6. Demo: Building custom string pool with ReaderWriterLock
  7. Wait handles
  8. Demo: consuming event once with AutoResetEvent
  9. Asynchronous primitives
  10. Demo: deadlock debugging
  11. Homework

Concurrent Data Structures

  1. Foundations
  2. BlockingCollection
  3. Demo: BlockingCollection z CancellationToken
  4. ConcurrentStack
  5. Demo: object cache with ConcurrentStack
  6. ConcurrentQueue
  7. Demo: memory pool in Kestrel ASP.NET with ConcurrentQueue
  8. ConcurrentDictionary
  9. Demo: efficient caching with ConcurrentDictionary.GetOrAdd
  10. ConcurrentBag
  11. Homework

New Concurrent Data Structures

  1. Channels
  2. Demo: bounded channels for metrics’ snapshots
  3. Pipelines
  4. Demo: Pipelines in StackExchange.Redis with locking and ConcurrentQueue
  5. Homework

Miscellaneous topics

  1. Demo: IValueTaskSource with Interlocked.CompareExchange
  2. Demo: IValueTaskSource based on an array with token discriminator
  3. ValueTask and pooling in .NET 5
  4. False Sharing
  5. F# async vs C# async
  6. Demo: Hosted services with IHostBuilder, IHostedService and ConcurrentQueue
  7. Demo: Observing thread contention in JetBrains Timeline
  8. PLINQ vs Parallel.ForEach and CPU/IO bound
  9. Homework
  10. Summary of the course

What do I get?

🌶 Access to 10-weeks Async Expert on-line course - Access to full Async Expert course material

🌶 Sessions with Mentors - 3x LIVE sessions with international Mentors of that program, who are async programming experts. Sessions will be recorded and shared with you on the platform.

🌶 Access to the course platform - The access to the platform that not only keeps recordings, but also allows you to discuss and contact with instructor and other participants of that course.

🌶 Access to the repository - Besides the access to the recordings, ability to contact others and meet LIVE with Mentors of the programme you receive the access to repository that includes code examples.

You cannot buy the course now. Sign up to receive messages for future Async Experts!

Course authors

Szymon Kulec

Dotnetos co-founder, Microsoft MVP, architect, speaker

I like to incorporate an unique combination of Software Architecture and Performance Engineering. With broad knowledge of modern architecture principles, distributed systems, as well as deep understanding of performance principles I make every allocation fear for its existence. I never allocate before noon.

Konrad Kokosa

Dotnetos co-founder, Microsoft MVP, author, speaker

I’m a Pro .NET Memory Management book author and independent consultant, blogger, speaker and a professional Tweeter [see: Twitter]. I share my passion as a .NET trainer, especially in the performance and app diagnosis field.

Łukasz Pyrzyk

Dotnetos co-founder, Microsoft MVP, author, speaker

I’m a software developer interested in performance topics, microservices and optimizations. Moreover, I’m a speaker (more than a blogger) and an active Twitter user.

Course mentors

Marc Gravell

Microsoft MVP, Code geek working at Stack Overflow

Marc has worked extensively with async in .NET from its inception, and async is a key component and consideration in all current library work. He maintains the popular 'Dapper', 'StackExchange.Redis' and 'protobuf-net' libraries, and contributes to many others - and is a long standing Microsoft MVP for these contributions. Moreover, he has been helping to build Stack Overflow for 10 years, specializing in performance, data access and communications in .NET!

Daniel Marbach

Microsoft MVP, Solutions Architect at Particular Software

He can bend minds and spoons with asynchronous programming. He has spoken at several conferences and usergroups about asynchronous programming and quality-driven development. He enjoys weightlifting, dark-roasted coffee, playing with his son and writing more code - at least until midnight when his self-imposed router hack kicks in.

Steve Cleary

Microsoft MVP, "Concurrency in C# Cookbook” author

Top answerer for async/await questions on Stack Overflow. In his free time he's a husband, father… and he programs. Today he uses C#/JavaScript, but remains interested in many different languages.

You cannot buy the course now. Sign up to receive messages for future Async Experts!

Questions and answers

🌶 Which programming language will be used in examples?

All the examples as well as all our work will be done in C#.

🌶 Which version of .NET will be used in samples?

We will work on LTS version of .NET Core 3.1 showing differences with .NET Framework when needed.

🌶 When does the course begin and for how long does it last?

The course starts on June 15th 2020. Every week you will receive an access to the next week-unit. New material will be added every week to not overwhelm you and to allow all the group to get through it at the same time.

🌶 What is the format of that course?

It is a video course. Recordings are uploaded to the platform. After signing in with your login and password, you have an access to your account. Besides the recordings, the platform includes a forum, thanks to which you can communicate with an instructor and other participants. Links, password and login will be passed one week before the course begins.

🌶 How long will I have the access to the course?

You will receive life-long access to that edition of the course, including its updates.

🌶 What if I would not be satisfied with the course?

If you consider the course is not for you, you will receive a refund. You have 30 days to decide. Just write to [email protected], and we will return you 100% value.

🌶 Will I receive all the course material at once?

No. We add new materials each week to not overwhelm you and to keep the group pace at the same tempo.

🌶 Will I receive an invoice?

Yes, you will receive a VAT invoice with your purchase. It will be sent to you within few days to the e-mail address provided during the order.

🌶 How can I pay for that course?

Payment is done with the use of our on-line shop. Each type of payment supported by it is ok for us.

🌶 Can I pay later, on instalments, etc.?

No. If you can't pay now, joining later will be possible, however the course will cost more.

🌶 How many people can access one course account?

The access is given to one person, using an address provided during the purchase. If you are interested in buying more accesses please contact us using [email protected] e-mail address.

🌶 What if I have a problem with something or something is unclear?

Write to us with that e-mail address: [email protected]


If you think that Async Expert is a nice dose of knowledge, share it with friends. Just use one of the buttons below!
Thank you!