دسترسی نامحدود
برای کاربرانی که ثبت نام کرده اند
برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید
در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید
برای کاربرانی که ثبت نام کرده اند
درصورت عدم همخوانی توضیحات با کتاب
از ساعت 7 صبح تا 10 شب
دسته بندی: برنامه نویسی: زبان های برنامه نویسی ویرایش: نویسندگان: Gastón Hillar سری: Programmer to programmer ISBN (شابک) : 9781118028124, 1118029771 ناشر: Wiley Pub سال نشر: 2011 تعداد صفحات: 550 زبان: English فرمت فایل : PDF (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود) حجم فایل: 22 مگابایت
در صورت تبدیل فایل کتاب Professional parallel programming with C# : master parallel extensions with .net 4 به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.
توجه داشته باشید کتاب برنامه نویسی موازی حرفه ای با سی شارپ: استاد پسوندهای موازی با .net 4 نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.
PROFESSIONAL PARALLEL PROGRAMMING WITH C#......Page 3
CONTENTS......Page 13
FOREWORD......Page 21
INTRODUCTION......Page 23
CHAPTER 1: TASK-BASED PROGRAMMING......Page 31
Working with Shared-Memory Multicore......Page 32
Differences Between Shared-Memory Multicore and Distributed-Memory Systems......Page 33
Parallel Programming and Multicore Programming......Page 34
Understanding Hardware Threads and Software Threads......Page 35
Understanding Amdahl’s Law......Page 40
Considering Gustafson’s Law......Page 43
Working with Lightweight Concurrency......Page 46
Creating Successful Task-Based Designs......Page 47
Designing With Concurrency in Mind......Page 48
Parallelizing Tasks......Page 49
Minimizing Critical Sections......Page 51
Preparing for NUMA and Higher Scalability......Page 52
Deciding the Convenience of Going Parallel......Page 57
Summary......Page 58
CHAPTER 2: IMPERATIVE DATA PARALLELISM......Page 59
Launching Parallel Tasks......Page 60
System.Threading.Tasks.Parallel Class......Page 61
Parallel.Invoke......Page 62
No Specific Execution Order......Page 63
Advantages and Trade-Offs......Page 67
Interleaved Concurrency and Concurrency......Page 68
Detecting Parallelizable Hotspots......Page 70
Measuring Speedups Achieved by Parallel Execution......Page 73
Parallelizing Loops......Page 75
Parallel.For......Page 76
Refactoring an Existing Sequential Loop......Page 78
Measuring Scalability......Page 80
Parallel.ForEach......Page 82
Working with Partitions in a Parallel Loop......Page 84
Optimizing the Partitions According to the Number of Cores......Page 86
Working with IEnumerable Sources of Data......Page 88
Exiting from Parallel Loops......Page 90
Understanding ParallelLoopState......Page 92
Analyzing the Results of a Parallel Loop Execution......Page 93
Catching Exceptions that Occur Inside Parallel Loops......Page 94
ParallelOptions......Page 96
Counting Hardware Threads......Page 99
Logical Cores Aren’t Physical Cores......Page 100
Using Gantt Charts to Detect Critical Sections......Page 101
Summary......Page 102
CHAPTER 3: IMPERATIVE TASK PARALLELISM......Page 103
Creating and Managing Tasks......Page 104
System.Theading.Tasks.Task......Page 105
TaskStatus: Initial States......Page 107
Using Tasks to Parallelize Code......Page 108
Starting Tasks......Page 109
Visualizing Tasks Using Parallel Tasks and Parallel Stacks......Page 110
Forgetting About Complex Threads......Page 115
Cancelling Tasks Using Tokens......Page 116
CancellationToken......Page 119
TaskFactory......Page 120
Handling Exceptions Thrown by Tasks......Page 121
Returning Values from Tasks......Page 122
Chaining Multiple Tasks Using Continuations......Page 125
Working with Complex Continuations......Page 127
TaskContinuationOptions......Page 128
Programming Complex Parallel Algorithms with Critical Sections Using Tasks......Page 130
Summary......Page 131
CHAPTER 4: CONCURRENT COLLECTIONS......Page 133
Understanding the Features Offered by Concurrent Collections......Page 134
ConcurrentQueue......Page 137
Understanding a Parallel Producer-Consumer Pattern......Page 141
Working with Multiple Producers and Consumers......Page 145
Designing Pipelines by Using Concurrent Collections......Page 150
ConcurrentStack......Page 151
Transforming Arrays and Unsafe Collections into Concurrent Collections......Page 158
ConcurrentBag......Page 159
IProducerConsumerCollection......Page 166
BlockingCollection......Page 167
Cancelling Operations on a BlockingCollection......Page 172
Implementing a Filtering Pipeline with Many BlockingCollection Instances......Page 174
ConcurrentDictionary......Page 180
Summary......Page 185
CHAPTER 5: COORDINATION DATA STRUCTURES......Page 187
Undesired Side Effects......Page 188
Race Conditions......Page 189
Deadlocks......Page 190
A Lock-Free Algorithm with Atomic Operations......Page 191
A Lock-Free Algorithm with Local Storage......Page 192
Understanding New Synchronization Mechanisms......Page 193
Working with Synchronization Primitives......Page 194
Synchronizing Concurrent Tasks with Barriers......Page 195
Barrier and ContinueWhenAll......Page 201
Catching Exceptions in all Participating Tasks......Page 202
Working with Timeouts......Page 203
Working with a Dynamic Number of Participants......Page 208
Working with Mutual-Exclusion Locks......Page 209
Working with Monitor......Page 212
Working with Timeouts for Locks......Page 214
Refactoring Code to Avoid Locks......Page 217
Using Spin Locks as Mutual-Exclusion Lock Primitives......Page 220
Working with Timeouts......Page 223
Working with Spin-Based Waiting......Page 224
Spinning and Yielding......Page 227
Using the Volatile Modifier......Page 230
Working with ManualResetEventSlim to Spin and Wait......Page 231
Working with Timeouts and Cancellations......Page 236
Working with ManualResetEvent......Page 240
Limiting Concurrency to Access a Resource......Page 241
Working with SemaphoreSlim......Page 242
Working with Semaphore......Page 246
Simplifying Dynamic Fork and Join Scenarios with CountdownEvent......Page 249
Working with Atomic Operations......Page 253
Summary......Page 258
CHAPTER 6: PLINQ: DECLARATIVE DATA PARALLELISM......Page 259
Transforming LINQ into PLINQ......Page 260
ParallelEnumerable and Its AsParallel Method......Page 262
AsOrdered and the orderby Clause......Page 263
Understanding Partitioning in PLINQ......Page 267
Performing Reduction Operations with PLINQ......Page 272
Creating Custom PLINQ Aggregate Functions......Page 275
Concurrent PLINQ Tasks......Page 279
Cancelling PLINQ......Page 283
WithDegreeOfParallelism......Page 285
Measuring Scalability......Page 287
Working with ForAll......Page 289
Measuring Scalability......Page 291
Configuring How Results Are Returned by Using WithMergeOptions......Page 294
Handling Exceptions Thrown by PLINQ......Page 296
Using PLINQ to Execute MapReduce Algorithms......Page 298
Designing Serial Stages Using PLINQ......Page 301
Summary......Page 303
Taking Advantage of Multi-Monitor Support......Page 305
Understanding the Parallel Tasks Debugger Window......Page 309
Viewing the Parallel Stacks Diagram......Page 316
Following the Concurrent Code......Page 324
Debugging Anonymous Methods......Page 334
Viewing Methods......Page 335
Viewing Threads in the Source Code......Page 337
Detecting Deadlocks......Page 340
Summary......Page 346
Going Downstairs from the Tasks Floor......Page 347
Understanding Global Queues......Page 349
Waiting for Worker Threads to Finish Their Work......Page 359
Tracking a Dynamic Number of Worker Threads......Page 366
Using Tasks Instead of Threads to Queue Jobs......Page 370
Understanding the Relationship Between Tasks and the Thread Pool......Page 373
Understanding Local Queues and the Work-Stealing Algorithm......Page 377
Specifying a Custom Task Scheduler......Page 383
Summary......Page 389
CHAPTER 9: ASYNCHRONOUS PROGRAMMING MODEL......Page 391
Mixing Asynchronous Programming with Tasks......Page 392
Working with TaskFactory.FromAsync......Page 393
Programming Continuations After Asynchronous Methods End......Page 398
Combining Results from Multiple Concurrent Asynchronous Operations......Page 399
Performing Asynchronous WPF UI Updates......Page 401
Performing Asynchronous Windows Forms UI Updates......Page 409
Creating Tasks that Perform EAP Operations......Page 415
Working with TaskCompletionSource......Page 424
Summary......Page 428
Preparing Parallel Tests......Page 429
Working with Performance Profiling Features......Page 434
Measuring Concurrency......Page 436
Serialized Execution......Page 446
Lock Contention......Page 449
Lock Convoys......Page 450
Oversubscription......Page 453
Undersubscription......Page 456
Partitioning Problems......Page 458
Workstation Garbage-Collection Overhead......Page 461
I/O Bottlenecks......Page 464
Main Thread Overload......Page 465
Understanding False Sharing......Page 468
Summary......Page 471
Understanding SIMD and Vectorization......Page 473
From MMX to SSE4.x and AVX......Page 476
Using the Intel Math Kernel Library......Page 477
Working with Multicore-Ready, Highly Optimized Software Functions......Page 485
Mixing Task-Based Programming with External Optimized Libraries......Page 486
Generating Pseudo-Random Numbers in Parallel......Page 487
Using Intel Integrated Performance Primitives......Page 491
Summary......Page 498
System.Threading.Tasks.Parallel Classes and Structures......Page 499
Task Classes, Enumerations, and Exceptions......Page 501
Data Structures for Coordination in Parallel Programming......Page 502
Concurrent Collection Classes: System.Collections.Concurrent......Page 504
Lightweight Synchronization Primitives......Page 506
PLINQ......Page 507
Signaling Classes......Page 509
Threading Structures, Delegates, and Enumerations......Page 510
BackgroundWorker Component......Page 516
Class Diagram......Page 517
Behavior Diagrams......Page 519
Use Case Diagram......Page 521
Interaction Overview Diagram......Page 523
Sequence Diagram......Page 524
Inspecting Parallel Extensions Extras......Page 527
Coordination Data Structures......Page 532
Extensions......Page 537
Parallel Algorithms......Page 543
Partitioners......Page 546
Task Schedulers......Page 547
INDEX......Page 551