Book Image

Parallel Programming and Concurrency with C# 10 and .NET 6

By : Alvin Ashcraft
5 (1)
Book Image

Parallel Programming and Concurrency with C# 10 and .NET 6

5 (1)
By: Alvin Ashcraft

Overview of this book

.NET has included managed threading capabilities since the beginning, but early techniques had inherent risks: memory leaks, thread synchronization issues, and deadlocks. This book will help you avoid those pitfalls and leverage the modern constructs available in .NET 6 and C# 10, while providing recommendations on patterns and best practices for parallelism and concurrency. Parallel, concurrent, and asynchronous programming are part of every .NET application today, and it becomes imperative for modern developers to understand how to effectively use these techniques. This book will teach intermediate-level .NET developers how to make their applications faster and more responsive with parallel programming and concurrency in .NET and C# with practical examples. The book starts with the essentials of multi-threaded .NET development and explores how the language and framework constructs have evolved along with .NET. You will later get to grips with the different options available today in .NET 6, followed by insights into best practices, debugging, and unit testing. By the end of this book, you will have a deep understanding of why, when, and how to employ parallelism and concurrency in any .NET application.
Table of Contents (18 chapters)
Part 1:Introduction to Threading in .NET
Part 2: Parallel Programming and Concurrency with C#
Part 3: Advanced Concurrency Concepts

What this book covers

Chapter 1, Managed Threading Concepts, covers the basics of working with managed threading in .NET. We will discuss how to create and destroy threads, handle exceptions, synchronize data, and the objects provided by .NET to handle background operations. You will gain a basic understanding of how threads can be managed in a .NET application. Practical examples in this chapter will illustrate how to use managed threading in C# projects.

Chapter 2, Evolution of Multithreaded Programming in .NET, introduces some of the concepts and features that will be explored in more depth in later chapters, including async/await, concurrent collections, and parallelism. You will learn how their options are expanded when selecting how to approach concurrency in applications.

Chapter 3, Best Practices for Managed Threading, covers some best practices when it comes to integrating managed threading concepts. We will cover important concepts such as static data, deadlocks, and exhausting managed resources. These are all areas that can lead to unstable applications and unexpected behavior. You will be given practical advice to avoid these pitfalls.

Chapter 4, User Interface Responsiveness with Threading, explains how to use ThreadPool in .NET. The real-world examples in this chapter will give you valuable options for ensuring UI responsiveness in your .NET applications.

Chapter 5, Asynchronous Programming with C#, explains asynchronous programming in C# and explores the best use of tasks in .NET.

Chapter 6, Parallel Programming Concepts, delves deeper into the Task Parallel Library (TPL) and tasking concepts.

Chapter 7, Task Parallel Library (TPL) and Dataflow, introduces the TPL Dataflow Library and illustrates some common patterns for its use through in-depth examples.

Chapter 8, Parallel Data Structures and Parallel LINQ (PLINQ), explores some of .NET’s useful features, including Parallel LINQ (PLINQ). Follow along with some practical examples of PLINQ in C#.

Chapter 9, Working with Concurrent Collections in .NET, dives deeper into some of the concurrent collections that help provide data integrity when using concurrency and parallelism in your code.

Chapter 10, Debugging Multithreaded Applications with Visual Studio, teaches you how to use the power of Visual Studio when debugging multithreaded .NET applications. This chapter will explore the tools in detail through concrete examples.

Chapter 11, Canceling Asynchronous Work, dives deeper into the different methods available to cancel concurrent and parallel work with .NET. You will gain a deep understanding of how to safely cancel asynchronous work.

Chapter 12, Unit Testing Async, Concurrent, and Parallel Code, provides some concrete advice and real-world examples of how developers can unit test code that employs multithreaded constructs. These examples will illustrate how unit tests can still be reliable while covering code that performs multithreaded operations.