This book is aimed at those who are new to multithreaded programming, and who are looking for a quick and easy way to get started. It is assumed that you have some experience in C# and .NET already, and you should also be familiar with basic computer science terminology and basic algorithms and data structures.What You Will Learn Use C# 6.0 asynchronous language features Work with raw threads, synchronize threads, and coordinate their work Develop your own asynchronous API with Task Parallel Library Work effectively with a thread pool Scale up your server application with I/O threads Parallelize your LINQ queries with PLINQ Use common concurrent collections Apply different parallel programming patterns Use Reactive Extensions to run asynchronous operations and manage their options In Detail
Multi-core processors are synonymous with computing speed and power in today's world, which is why multithreading has become a key concern for C# developers. Multithreaded code helps you create effective, scalable, and responsive applications.
This is an easy-to-follow guide that will show you difficult programming problems in context. You will learn how to solve them with practical, hands-on, recipes. With these recipes, you'll be able to start creating your own scalable and reliable multithreaded applications. Starting from learning what a thread is, we guide you through the basics and then move on to more advanced concepts such as task parallel libraries, C# asynchronous functions, and much more.
Rewritten to the latest C# specification, C# 6, and updated with new and modern recipes to help you make the most of the hardware you have available, this book will help you push the boundaries of what you thought possible in C#.Style and approach
This is an easy-to-follow guide full of hands-on examples of real-world multithreading tasks. Each topic is explained and placed in context, and for the more inquisitive, there are also more in-depth details of the concepts used.
In the modern world, users expect more and more from their applications and devices, and multi-core hardware has the potential to provide it. But it takes carefully crafted code to turn that potential into responsive, scalable applications.
With Pro Asynchronous Programming with .NET you will:
Meet the underlying model for asynchrony on Windows—threads. Learn how to perform long blocking operations away from your UI thread to keep your UI responsive, then weave the results back in as seamlessly as possible. Master the async/await model of asynchrony in .NET, which makes asynchronous programming simpler and more achievable than ever before. Solve common problems in parallel programming with modern async techniques. Get under the hood of your asynchronous code with debugging techniques and insights from Visual Studio and beyond. In the past asynchronous programming was seen as an advanced skill. It’s now a must for all modern developers. Pro Asynchronous Programming with .NET is your practical guide to using this important programming skill anywhere on the .NET platform.
Concurrency is becoming more common in responsive and scalable application development, but it’s been extremely difficult to code. The detailed solutions in this cookbook show you how modern tools raise the level of abstraction, making concurrency much easier than before. Complete with ready-to-use code and discussions about how and why the solution works, you get recipes for using:async and await for asynchronous operationsParallel programming with the Task Parallel LibraryThe TPL Dataflow library for creating dataflow pipelinesCapabilities that Reactive Extensions build on top of LINQUnit testing with concurrent codeInterop scenarios for combining concurrent approachesImmutable, threadsafe, and producer/consumer collectionsCancellation support in your concurrent codeAsynchronous-friendly Object-Oriented ProgrammingThread synchronization for accessing data
If you are a C# developer who wants to develop modern applications in C# and wants to overcome problems by using asynchronous APIs and standard patterns, then this book is ideal for you. Reasonable development knowledge, an understanding of core elements and applications related to the .Net platform, and also the fundamentals of concurrency is assumed.What You Will LearnApply general multithreading concepts to your application's designLeverage lock-free concurrency and learn about its pros and cons to achieve efficient synchronization between user threadsCombine your asynchronous operations with Task Parallel LibraryMake your code easier with C#'s asynchrony supportUse common concurrent collections and programming patternsWrite scalable and robust server-side asynchronous codeCreate fast and responsible client applicationsAvoid common problems and troubleshoot your multi-threaded and asynchronous applicationsIn Detail
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.Style and approach
An easy-to-follow, example-based guide that will walk you through the core principles of concurrency and multithreading using C#.
By the end of this book, you will have a complete understanding of efficient programming using high-performance techniques, and will able to write highly optimized applications.