Book Image

Mastering C# Concurrency

Book Image

Mastering C# Concurrency

Overview of this book

Starting with the traditional approach to concurrency, you will learn how to write multithreaded concurrent programs and compose ways that won't require locking. You will explore the concepts of parallelism granularity, and fine-grained and coarse-grained parallel tasks by choosing a concurrent program structure and parallelizing the workload optimally. You will also learn how to use task parallel library, cancellations, timeouts, and how to handle errors. You will know how to choose the appropriate data structure for a specific parallel algorithm to achieve scalability and performance. Further, you'll learn about server scalability, asynchronous I/O, and thread pools, and write responsive traditional Windows and Windows Store applications. By the end of the book, you will be able to diagnose and resolve typical problems that could happen in multithreaded applications.
Table of Contents (17 chapters)
Mastering C# Concurrency
Credits
About the Authors
About the Reviewers
www.PacktPub.com
Preface
Index

Asynchronous patterns


Since releasing the first version of C# and the .NET Framework, there has been built-in support for running asynchronous operations. Unfortunately, this infrastructure was quite complicated and hard to use, and this caused the next platform versions to include new ways (patterns) of writing asynchronous code that enhanced asynchronous programming experience.

Here, we will review three asynchronous programming patterns starting from the oldest:

  • APM: Asynchronous Programming Model (introduced in the .NET Framework 1.0)

  • EAP: Event-Based Asynchronous Pattern (released with the .NET Framework 2.0)

  • TAP: Task-Based Asynchronous Pattern (appeared with the .NET Framework 4.0)

The first two patterns are usually considered as legacy code and should be used only in support scenarios where there is no possibility to use the task infrastructure from Task Parallel Library.

Asynchronous Programming Model

The Asynchronous Programming Model (APM) structure is as follows:

// Synchronous operation...