Async and await are now common elements of .NET ecosystem. Do you know how they work? Do you know what is synchronization context, how to wait for async void methods or how to implement custom task scheduler?
In this talk I show internals of async and await. I present state machine created by the compiler, consider allocation issues and show typical deadlock scenarios. We will see how to call async methods from synchronous code, how to wait for async void, how to implement custom synchronization context or task scheduler to handle exceptions, and how to run task without allocation at all.
You will learn:
- Understanding Task Parallel Library and how it's constructed
- Synchronization Context and its internals, why it is important and what are popular implementations
- Understanding async code flow, thread pools, task scheduler and other components used by async state machine