.NET 4.5 Parallel Extensions Cookbook
Getting Started with Task Parallel Library
Handling task exceptions using try/catch block
Handling task exceptions with AggregateException.Handle
Passing task results to a continuation
Continue "WhenAny" and "WhenAll"
Specifying when a continuation will run
Using a continuation for exception handling
Using a continuation to chain multiple tasks
Using a continuation to update a UI
Learning Concurrency with Parallel Loops
Creating a basic parallel for loop
Creating a basic parallel foreach loop
Handling exceptions in a parallel loop
Controlling the degree of parallelism in a loop
Partitioning data in a parallel loop
Creating a basic parallel query
Preserving order in parallel LINQ
Limiting parallelism in a query
Range projection with parallel LINQ
Handling exceptions in parallel LINQ
Cancelling a parallel LINQ query
Performing reduction operations
Adding and removing items to BlockingCollection
Iterating a BlockingCollection with GetConsumingEnumerable
Performing LIFO operations with ConcurrentStack
Thread safe data lookups with ConcurrentDictionary
Cancelling an operation in a concurrent collection
Working with multiple producers and consumers
Creating object pool with ConcurrentStack
Adding blocking and bounding with IProducerConsumerCollection
Using multiple concurrent collections to create a pipeline
Using SpinLock for synchronization
Synchronizing multiple tasks with a Barrier
Waiting for multiple threads with CountdownEvent
Using ManualResetEventSlim to spin and wait
Using SemaphoreSlim to limit access
Using the Threads and Call Stack windows
Using the Parallel Stacks window
Watching values in a thread with Parallel Watch window
Detecting deadlocks with the Parallel Tasks window
Measure CPU utilization with Concurrency Visualizer
Using Concurrency Visualizer Threads view
Using Concurrency Visualizer Cores view
Handling Exceptions in asynchronous code
Cancelling an asynchronous operation
Cancelling async operation after timeout period
Processing multiple async tasks as they complete
Improving performance of async solution with Task.WhenAll
Checking the progress of an asynchronous task
Reading from and writing to a dataflow block synchronously
Reading from and writing to a dataflow block asynchronously
Implementing a producer-consumer dataflow pattern
Specifying the degree of parallelism