Chapter 12. Threading, Synchronization, and Concurrency
12.0 Introduction
A thread represents a single flow of execution logic in a program. Some programs never need more than a single thread to execute efficiently, but many do, and that is what this chapter is about. Threading in .NET allows you to build responsive and efficient applications. Many applications need to perform multiple actions at the same time (such as user interface interaction and data processing), and threading provides the capability to achieve this. Being able to have your application perform multiple tasks is a very liberating and yet complicating factor in your application design. Once you have multiple threads of execution in your application, you need to start thinking about what data in your application needs to be protected from multiple accesses, what data could cause threads to develop an interdependency that could lead to deadlocking (Thread A has a resource that Thread B is waiting for, and Thread B has a resource that Thread A is waiting for), and how to store data you want to associate with the individual threads. You will also want to consider race conditions when dealing with threads. A race condition occurs when two threads access a shared variable at the same time. Both threads read the variable and get the same value and then race to see which thread can write the value last to the shared variable. The last thread to write to the variable “wins,” as it is writing over the value that the ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access