Professional parallel programming with C# : master parallel extensions with .NET 4 / Gastón C. Hillar
Resource type: Ressourcentyp: Buch (Online)Book (Online)Language: English Series: Wrox programmer to programmerPublisher: Indianapolis, Ind : Wiley Pub., Inc, c2010Edition: Online-AusgDescription: Online-Ressource (1 online resource (xxvii, 547 p.)) : illISBN:- 9781282939820
- 1282939823
- 9781118028124
- 0470495995
- 9781118029770
- 9781118029787
- 9780470495995
- Parallel programming with C#
- Parallelverarbeitung
- Softwareentwicklung
- Microsoft dot net 4.0
- C sharp
- Microsoft .NET
- Microsoft .NET Framework
- (Computer program language)
- C# (Computer program language)
- Parallel programming (Computer science)
- Electronic books
- Microsoft Visual studio
- Parallel programming (Computer science)
- C♯ (Computer program language)
- Microsoft .NET
- Electronic books
- 005.275;006.7882
- 005.275
- 006.7882
- QA76.642
- QA76.73.C154
- QA76.76.D47 .H889 2010
Contents:
Summary: Expert guidance for those programming today's dual-core processors PCs As PC processors explode from one or two to now eight processors, there is an urgent need for programmers to master concurrent programming. This book dives deep into the latest technologies available to programmers for creating professional parallel applications using C#, .NET 4, and Visual Studio 2010. The book covers task-based programming, coordination data structures, PLINQ, thread pools, asynchronous programming model, and more. It also teaches other parallel programming techniques, such as SIMD and vectorization. Teaches programmers professional-level, task-based, parallel programming with C#, .NET 4, and Visual Studio 2010 Covers concurrent collections, coordinated data structures, PLINQ, thread pools, asynchronous programming model, Visual Studio 2010 debugging, and parallel testing and tuning Explores vectorization, SIMD instructions, and additional parallel libraries Master the tools and technology you need to develop thread-safe concurrent applications for multi-core systems, with Professional Parallel Programming with C#.Summary: Intro -- Title Page -- Copyright -- Dedication -- Credits -- About the Author -- About the Technical Editor -- Acknowledgments -- Foreword -- Introduction -- Who This Book Is For -- What This Book Covers -- How This Book Is Structured -- What You Need to Use This Book -- Conventions -- Source Code -- Errata -- P2P.WROX.COM -- Chapter 1: Task-Based Programming -- Working with Shared-Memory Multicore -- Understanding Hardware Threads and Software Threads -- Understanding Amdahl's Law -- Considering Gustafson's Law -- Working with Lightweight Concurrency -- Creating Successful Task-Based Designs -- Preparing for NUMA and Higher Scalability -- Deciding the Convenience of Going Parallel -- Summary -- Chapter 2: Imperative Data Parallelism -- Launching Parallel Tasks -- Transforming Sequential Code to Parallel Code -- Parallelizing Loops -- Specifying the Desired Degree of Parallelism -- Using Gantt Charts to Detect Critical Sections -- Summary -- Chapter 3: Imperative Task Parallelism -- Creating and Managing Tasks -- Summary -- Chapter 4: Concurrent Collections -- Understanding the Features Offered by Concurrent Collections -- Summary -- Chapter 5: Coordination Data Structures -- Using Cars and Lanes to Understand the Concurrency Nightmares -- Understanding New Synchronization Mechanisms -- Working with Synchronization Primitives -- Working with Mutual-Exclusion Locks -- Using Spin Locks as Mutual-Exclusion Lock Primitives -- Working with Lightweight Manual Reset Events -- Limiting Concurrency to Access a Resource -- Simplifying Dynamic Fork and Join Scenarios with CountdownEvent -- Working with Atomic Operations -- Summary -- Chapter 6: PLINQ: Declarative Data Parallelism -- Transforming LINQ into PLINQ -- Specifying the Execution Mode -- Understanding Partitioning in PLINQ -- Performing Reduction Operations with PLINQ.PPN: PPN: 80917992XPackage identifier: Produktsigel: ZDB-26-MYL | ZDB-30-PAD | ZDB-30-PQE | ZDB-38-EBR
PROFESSIONAL PARALLEL PROGRAMMING WITH C#; CONTENTS; FOREWORD; INTRODUCTION; CHAPTER 1: TASK-BASED PROGRAMMING; Working with Shared-Memory Multicore; Differences Between Shared-Memory Multicore and Distributed-Memory Systems; Parallel Programming and Multicore Programming; Understanding Hardware Threads and Software Threads; Understanding Amdahl's Law; Considering Gustafson's Law; Working with Lightweight Concurrency; Creating Successful Task-Based Designs; Designing With Concurrency in Mind; Understanding the Differences between Interleaved Concurrency, Concurrency, and Parallelism
Parallelizing TasksMinimizing Critical Sections; Understanding Rules for Parallel Programming for Multicore; Preparing for NUMA and Higher Scalability; Deciding the Convenience of Going Parallel; Summary; CHAPTER 2: IMPERATIVE DATA PARALLELISM; Launching Parallel Tasks; System.Threading.Tasks.Parallel Class; Parallel.Invoke; No Specific Execution Order; Advantages and Trade-Offs; Interleaved Concurrency and Concurrency; Transforming Sequential Code to Parallel Code; Detecting Parallelizable Hotspots; Measuring Speedups Achieved by Parallel Execution; Understanding the Concurrent Execution
Parallelizing LoopsParallel.For; Refactoring an Existing Sequential Loop; Measuring Scalability; Working with Embarrassingly Parallel Problems; Parallel.ForEach; Working with Partitions in a Parallel Loop; Optimizing the Partitions According to the Number of Cores; Working with IEnumerable Sources of Data; Exiting from Parallel Loops; Understanding ParallelLoopState; Analyzing the Results of a Parallel Loop Execution; Catching Exceptions that Occur Inside Parallel Loops; Specifying the Desired Degree of Parallelism; ParallelOptions; Counting Hardware Threads
Logical Cores Aren't Physical CoresUsing Gantt Charts to Detect Critical Sections; Summary; CHAPTER 3: IMPERATIVE TASK PARALLELISM; Creating and Managing Tasks; System.Theading.Tasks.Task; Understanding a Task's Status and Lifecycle; TaskStatus: Initial States; TaskStatus: Final States; Using Tasks to Parallelize Code; Starting Tasks; Visualizing Tasks Using Parallel Tasks and Parallel Stacks; Waiting for Tasks to Finish; Forgetting About Complex Threads; Cancelling Tasks Using Tokens; CancellationTokenSource; CancellationToken; TaskFactory; Handling Exceptions Thrown by Tasks
Returning Values from TasksTaskCreationOptions; Chaining Multiple Tasks Using Continuations; Mixing Parallel and Sequential Code with Continuations; Working with Complex Continuations; TaskContinuationOptions; Programming Complex Parallel Algorithms with Critical Sections Using Tasks; Preparing the Code for Concurrency and Parallelism; Summary; CHAPTER 4: CONCURRENT COLLECTIONS; Understanding the Features Offered by Concurrent Collections; System.Collections.Concurrent; ConcurrentQueue; Understanding a Parallel Producer-Consumer Pattern; Working with Multiple Producers and Consumers
Designing Pipelines by Using Concurrent Collections
PROFESSIONAL PARALLEL PROGRAMMING WITH C#; CONTENTS; FOREWORD; INTRODUCTION; CHAPTER 1: TASK-BASED PROGRAMMING; Working with Shared-Memory Multicore; Differences Between Shared-Memory Multicore and Distributed-Memory Systems; Parallel Programming and Multicore Programming; Understanding Hardware Threads and Software Threads; Understanding Amdahl's Law; Considering Gustafson's Law; Working with Lightweight Concurrency; Creating Successful Task-Based Designs; Designing With Concurrency in Mind; Understanding the Differences between Interleaved Concurrency, Concurrency, and Parallelism
Parallelizing TasksMinimizing Critical Sections; Understanding Rules for Parallel Programming for Multicore; Preparing for NUMA and Higher Scalability; Deciding the Convenience of Going Parallel; Summary; CHAPTER 2: IMPERATIVE DATA PARALLELISM; Launching Parallel Tasks; System.Threading.Tasks.Parallel Class; Parallel.Invoke; No Specific Execution Order; Advantages and Trade-Offs; Interleaved Concurrency and Concurrency; Transforming Sequential Code to Parallel Code; Detecting Parallelizable Hotspots; Measuring Speedups Achieved by Parallel Execution; Understanding the Concurrent Execution
Parallelizing LoopsParallel.For; Refactoring an Existing Sequential Loop; Measuring Scalability; Working with Embarrassingly Parallel Problems; Parallel.ForEach; Working with Partitions in a Parallel Loop; Optimizing the Partitions According to the Number of Cores; Working with IEnumerable Sources of Data; Exiting from Parallel Loops; Understanding ParallelLoopState; Analyzing the Results of a Parallel Loop Execution; Catching Exceptions that Occur Inside Parallel Loops; Specifying the Desired Degree of Parallelism; ParallelOptions; Counting Hardware Threads
Logical Cores Aren't Physical CoresUsing Gantt Charts to Detect Critical Sections; Summary; CHAPTER 3: IMPERATIVE TASK PARALLELISM; Creating and Managing Tasks; System.Theading.Tasks.Task; Understanding a Task's Status and Lifecycle; TaskStatus: Initial States; TaskStatus: Final States; Using Tasks to Parallelize Code; Starting Tasks; Visualizing Tasks Using Parallel Tasks and Parallel Stacks; Waiting for Tasks to Finish; Forgetting About Complex Threads; Cancelling Tasks Using Tokens; CancellationTokenSource; CancellationToken; TaskFactory; Handling Exceptions Thrown by Tasks
Returning Values from TasksTaskCreationOptions; Chaining Multiple Tasks Using Continuations; Mixing Parallel and Sequential Code with Continuations; Working with Complex Continuations; TaskContinuationOptions; Programming Complex Parallel Algorithms with Critical Sections Using Tasks; Preparing the Code for Concurrency and Parallelism; Summary; CHAPTER 4: CONCURRENT COLLECTIONS; Understanding the Features Offered by Concurrent Collections; System.Collections.Concurrent; ConcurrentQueue; Understanding a Parallel Producer-Consumer Pattern; Working with Multiple Producers and Consumers
Designing Pipelines by Using Concurrent Collections
No physical items for this record