Mastering C# Concurrency
تحولات اخیر #C و NET. استفادههای ضمنی از asynchrony و concurrency را در بر میگیرد، با این که شما از وجود آنها آگاه نیستید. این میتواند به مشکلات بیشتری منجر شود، به این علت که جزئیات بسیار زیادی معمولا در زیرساخت زبان #C و APIهای کتابخانه کلاس پایه NET. پنهان شده اند. برای جلوگیری از مشکلات و قادر بودن به ایجاد برنامههای قوی، یک توسعه دهنده باید دقیقا بداند که در پشت صحنهی آسنکرونی در NET. چه میگذرد. علاوه بر این ، این مهم است که وقتی یک برنامه concurrent مینویسید، اهدافتان را بفهمید. اگر این برنامه بر روی client اجرا میشود، خوب است که از همهی منابع محاسباتی در دسترس استفاده شود تا برنامه به سریعترین حالت ممکن اجرا شود. این شامل استفاده موثر از هستههای CPU است و در نتیجه نیاز به مهارتهای برنامه نویسیهای موازی دارد. با این حال اگر برنامه بر روی سرور میشود، مهمتر این است که سرور مورد نظر از حداکثر کلاینت ممکن پشتیبانی کند تا این که کارایی پردازش درخواست به یک کلاینت خاص را بالا ببرد. اینها احتیاج دارند که برنامه نویس بین آسنکرونی و مالتی تردینگ تمایز قائل بشود و درکی از مقیاس پذیری داشته باشد.
تمامی عناوین پوشش داده شده در این کتاب، برای رسیدن به یک درک قوی از آسنکرونی و برنامه نویسی موازی در #C، اطلاعات کافی ارائه داده شده است. ما با مفاهیم پایه ای چند نخی شروع میکنیم، مشکلات و راه حلهای رایج برنامه نویسی concurrent را مرور میکنیم، و پس از آن وارد #C و NET. میشویم که از برنامه نویسی برنامههای concurrent پشتیبانی میکنند. در ادامهی این کتاب، ساختمانهای داده و الگوهای concurrent را پوشش داده ایم، و مسائل همزمانی در سمت سرور و کلاینت را مورد بررسی قرار داده ایم. در انتهای کتاب، خلاصه ای از اصول پایه ای برای ایجاد برنامههای concurrent قوی، فراهم کرده ایم.
تحولات اخیر #C و NET. استفادههای ضمنی از asynchrony و concurrency را در بر میگیرد، با این که شما از وجود آنها آگاه نیستید. این میتواند به مشکلات بیشتری منجر شود، به این علت که جزئیات بسیار زیادی معمولا در زیرساخت زبان #C و APIهای کتابخانه کلاس پایه NET. پنهان شده اند. برای جلوگیری از مشکلات و قادر بودن به ایجاد برنامههای قوی، یک توسعه دهنده باید دقیقا بداند که در پشت صحنهی آسنکرونی در NET. چه میگذرد. علاوه بر این ، این مهم است که وقتی یک برنامه concurrent مینویسید، اهدافتان را بفهمید. اگر این برنامه بر روی client اجرا میشود، خوب است که از همهی منابع محاسباتی در دسترس استفاده شود تا برنامه به سریعترین حالت ممکن اجرا شود. این شامل استفاده موثر از هستههای CPU است و در نتیجه نیاز به مهارتهای برنامه نویسیهای موازی دارد. با این حال اگر برنامه بر روی سرور میشود، مهمتر این است که سرور مورد نظر از حداکثر کلاینت ممکن پشتیبانی کند تا این که کارایی پردازش درخواست به یک کلاینت خاص را بالا ببرد. اینها احتیاج دارند که برنامه نویس بین آسنکرونی و مالتی تردینگ تمایز قائل بشود و درکی از مقیاس پذیری داشته باشد.
تمامی عناوین پوشش داده شده در این کتاب، برای رسیدن به یک درک قوی از آسنکرونی و برنامه نویسی موازی در #C، اطلاعات کافی ارائه داده شده است. ما با مفاهیم پایه ای چند نخی شروع میکنیم، مشکلات و راه حلهای رایج برنامه نویسی concurrent را مرور میکنیم، و پس از آن وارد #C و NET. میشویم که از برنامه نویسی برنامههای concurrent پشتیبانی میکنند. در ادامهی این کتاب، ساختمانهای داده و الگوهای concurrent را پوشش داده ایم، و مسائل همزمانی در سمت سرور و کلاینت را مورد بررسی قرار داده ایم. در انتهای کتاب، خلاصه ای از اصول پایه ای برای ایجاد برنامههای concurrent قوی، فراهم کرده ایم.
Who This Book Is For
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 Learn
• Apply general multithreading concepts to your application's design
• Leverage lock-free concurrency and learn about its pros and cons to achieve efficient synchronization between user threads
• Combine your asynchronous operations with Task Parallel Library
• Make your code easier with C#'s asynchrony support
• Use common concurrent collections and programming patterns
• Write scalable and robust server-side asynchronous code
• Create fast and responsible client applications
• Avoid common problems and troubleshoot your multi-threaded and asynchronous applications
In 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#.
Table of Contents
Chapter 1. Traditional Concurrency
Chapter 2. Lock-Free Concurrency
Chapter 3. Understanding Parallelism Granularity
Chapter 4. Task Parallel Library in Depth
Chapter 5. C# Language Support for Asynchrony
Chapter 6. Using Concurrent Data Structures
Chapter 7. Leveraging Parallel Patterns
Chapter 8. Server-side Asynchrony
Chapter 9. Concurrency in the User Interface
Chapter 10. Troubleshooting Parallel Programs