.NET Systems Programming Learned the Hard Way - Aaron Stannard - NDC Oslo 2023
"What is a thread quantum and why is it different on Windows Desktop and Windows Server? What's the difference between a blocking call and a blocking flow? Why did our remoting benchmarks suddenly drop when we moved to .NET 6? When should I try to write lock-free code? What does the `volatile` keyword mean?" Welcome to the types of questions my team and I are asked, or ask ourselves, on a regular basis - we're the makers of Akka.NET, a high performance distributed actor system library and these are the sorts of low-level questions we need to answer in order to build great experiences for our own users. In this talk we're going to learn about .NET systems programming, the low level components we hope we can take for granted, but sometimes can't. In particular: - The `ThreadPool` and how work queues operate in practice; - Synchronization mechanisms - including `lock`-less ones; - Memory management, `Span{T}`, and garbage collection; - `await`, `Task`, and the synchronization contexts; and - Crossing user-code and system boundaries in areas such as sockets. This talk will help .NET developers understand why their code works the way it does and what to do in scenarios that demand high performance. Check out our new channel: NDC Clips: @ndcclips Check out more of our featured speakers and talks at https://ndcconferences.com/ https://ndcoslo.com/