Develop powerful C# applications to take advantage of today's multicore hardware
About This Book
- Make use of the latest Visual Studio debugging tools, to manage and debug multiple threads running simultaneously
- Learn how to use the Thread, Task, and Parallel libraries in your C# applications
- Explore the evolution of multithreaded development in C#, starting with BackgroundWorker classes and moving on to threads and tasks and finally covering Async
Who This Book Is For
If you are a C# developer and want to learn how to take advantage of the features of .NET for concurrent and multithreaded applications, then this book is for you. If you are already comfortable with C# but want to learn more about parallel design patterns, threads, tasks, and async, then look no further!
Most modern machines have dual-core processors. This means that the present-day computer has the ability to multitask. Using multiple cores means your applications can process data faster and be more responsive to users. However, to fully exploit this in your applications, you need to write multithreading code.
We will begin by covering some techniques that have been around since the beginning of .NET, including the BackgroundWorker component, timers, and the Thread class. We will use tasks, task factories, and parallel loops to develop multithreaded applications at a higher level than directly creating and managing individual threads. Finally, we will look at the tools Visual Studio provides for debugging parallel applications, common concurrent design patterns, and the latest updates in PLINQ and async.
Table of Contents
Chapter 1: Understanding Multiprocessing and Multiple Cores
Chapter 2: Looking at Multithreaded Classes – BackgroundWorker
Chapter 3: Thread Class – Heavyweight Concurrency in C#
Chapter 4: Advanced Thread Processing
Chapter 5: Lightweight Concurrency – Task Parallel Library (TPL)
Chapter 6: Task-based Parallelism
Chapter 7: Data Parallelism
Chapter 8: Debugging Multithreaded Applications with Visual Studio
Chapter 9: Pipeline and Producer-consumer Design Patterns
Chapter 10: Parallel LINQ – PLINQ
Chapter 11: The Asynchronous Programming Model