Async Masterclass
You've mastered async and await, but you find you need more powerful tools. This is how to build them.
Tired of reading articles about async that just don't go deep enough? Here you go. This is the async masterclass. There are no breakfast food analogies here. Except bacon, because bacon is awesome. Bacon.
Forget Task. We'll be learning ValueTask. And IAsyncDisposable. And AsyncLocal. Oh, and asynchronous queues - time to learn some Channels. Let's throw in asynchronous synchronization primitives. And I mean building those - seeing how they actually work - not just using them. This ain't your momma's SemaphoreSlim; it's time to build your *own* asynchronous "pause" primitive with TaskCompletionSource. Speaking of TCS, we'll also cover the dictionary completion technique. Let's build our own AsyncLazy, too. Maybe we'll even tackle asynchronous caching and the challenges that come with that (spoiler: we will).
It sounds like a random assortment of topics, but each of these skills are valuable as soon as you move from basic async/await into real-world complexity. By the end of this masterclass, you'll be equipped to take your async to the next level!
Mmm... bacon...
About the speaker
Stephen Cleary
Stephen Cleary is a Christian, husband, and father who feels like he does software development in his spare time. :)
He is a Microsoft MVP and the author of "Concurrency in C# Cookbook" (O'Reilly) on asynchronous and parallel programming, as well as several MSDN articles. He's the top async/await answerer on Stack Overflow, he's assisted hundreds of companies with async adoption across all kinds of applications, his blog has been the go-to source for async advice for years, he contributed some of the MS documentation on subjects such as ValueTask, and he's the maintainer of AsyncEx, a library with >50M downloads which provides asynchronous coordination primitives and other async helper types.
He published a .NET-oriented version of the classic TCP/IP FAQ on his blog almost 15 years ago, and has helped countless developers debug their application protocols. At his first job ever, he ended up fixing the primary protocol used in all their systems as well as implementing a TCP/IP replacement for an old serial protocol, and at another job he designed and implemented a multiplexed streaming protocol for embedded devices from scratch. More recently, he recorded a YouTube series where he live-coded a fully asynchronous chat-like TCP/IP protocol using modern .NET pipelines and channels.
