You Thought You Understood Multithreading
In the single-core world, the lock keyword is all the vast majority of developers had to know about multithreading. But with today’s ubiquitous multi-core processors, parallel computing is becoming an increasingly important skill. We will discuss fundamental concepts of multi-core programming as well as their implementation by the Windows operating system and the .NET Framework, and give you a rock-solid understanding of what’s happening when you’re using multithreaded features in .NET.
Agenda
Hardware: Multithreading from the point of view of processor microarchitecture: memory hierarchy, latency of synchronized memory operations, memory models on different hardware architectures (x64, ARM). Interlocked memory operations (Interlocked class).
Lab 1. Simple non-blocking data structures: Non-blocking stack, ring buffer.
Windows Kernel: Concept of threads and processes. Dispatching of threads to the CPU. Dispatcher objects (Mutex, events, …) and their API in .NET. Cost of kernel dispatching. Spin waits.
.NET Framework: Implementation of the lock keyword. Overview of .NET APIs for multithreading (collections, tasks).
Topics covered -