In the previous chapter, we examined the
BackgroundWorker component and how to use it to achieve performance gains by multithreading our application. This component is useful but has many limitations. In order to have very precise control over the concurrently running threads in our applications, we can use the
Thread class instead.
In this chapter, we will study this class in detail and develop more complex multithreaded applications that take full advantage of the multiprocessing capabilities of today's hardware.
We will use the terms heavyweight concurrency and lightweight concurrency throughout this book. Let's take a minute to reflect on what we mean by this. When we use the
Thread class, ...