Introduction in .Net Multithreading Programming (II)
In the previous article we laid out the foundation of what multithreading is and described the pillar of asynchronous programming in .Net, namely the IAsyncResult interface. We also provided a brief history of the evolution of the .Net multithreading abstractization, starting with the Thread class and ending with the async-await pattern (and keywords). In this article we will elaborate on the topic, giving detailed .Net thread synchronization examples, focusing on the two modes the CPU is spending time, in any modern operating system: the user-mode and the kernel-mode. As usual, we start with the definitions.