.NET Parallel Programming

All about Async/Await, System.Threading.Tasks, System.Collections.Concurrent, System.Linq, and more…

ParallelExtensionsExtras Tour – #9 – ObjectPool

(The full set of ParallelExtensionsExtras Tour posts is available here.) An object pool is a mechanism/pattern to avoid the repeated creation and destruction of objects.  When code is done with an object, rather than allowing it to be garbage collected (and finalized if it’s finalizable), you put the object back into ...

ParallelExtensionsExtras Tour – #8 – ReductionVariable

(The full set of ParallelExtensionsExtras Tour posts is available here.) The new .NET 4 System.Threading.ThreadLocal<T> is quite useful when you need per-thread, per-instance storage.  This is in contrast to the fast ThreadStaticAttribute, which supports only per-thread storage (in .NET 4, ThreadLocal<T> actually ...

ParallelExtensionsExtras Tour – #7 – Additional TaskSchedulers

(The full set of ParallelExtensionsExtras Tour posts is available here.)In our last two ParallelExtensionsExtras blog tour posts, we’ve discussed two TaskScheduler implementations in ParallelExtensionsExtras: StaTaskScheduler and ConcurrentExclusiveInterleave.  These are just 2 of more than 10 schedulers in ParallelExtensionsExtras...

ParallelExtensionsExtras Tour – #6 – ConcurrentExclusiveInterleave

(The full set of ParallelExtensionsExtras Tour posts is available here.)   As mentioned in the previous ParallelExtensionsExtras blog tour post, the Task Parallel Library (TPL) supports an extensible task scheduling mechanism, and we demonstrated how an StaTaskScheduler could be implemented that scheduled tasks onto custom STA ...

ParallelExtensionsExtras Tour – #5 – StaTaskScheduler

(The full set of ParallelExtensionsExtras Tour posts is available here.)  The Task Parallel Library (TPL) supports a wide array of semantics for scheduling tasks, even though it only includes two in the box (one using the ThreadPool, and one using SynchronizationContext, which exists primarily to run tasks on UI threads).  ...

ParallelExtensionsExtras Tour – #3 – Additional Task Extensions Methods

(The full set of ParallelExtensionsExtras Tour posts is available here.)  In our last ParallelExtensionsExtras tour post, we discussed implementing an extension ToObservable method for Task<TResult>.  This is just one of a myriad of extra pieces of functionality that are useful with Tasks, and the TaskExtrasExtensions...

ParallelExtensionsExtras Tour – #2 – Task.ToObservable

(The full set of ParallelExtensionsExtras Tour posts is available here.)  In our previous ParallelExtensionsExtras tour post, we discussed a custom implementation of the LINQ operators, in particular for working with Task<TResult> instances in an asynchronous manner. There is already an impressive implementation of the ...

ParallelExtensionsExtras Tour – #1 – LINQ to Tasks

(The full set of ParallelExtensionsExtras Tour posts is available here.) The .NET Framework developer center provides a concise description of Language Integrated Query (LINQ):LINQ is a set of extensions to the .NET Framework that encompass language-integrated query, set, and transform operations. It extends C# and Visual Basic with ...

A Tour of ParallelExtensionsExtras

Throughout the development of Parallel Extensions for the .NET Framework 4, we’ve come across a myriad of situations where certain functionality would be useful in developing a particular application or library, but where that functionality isn’t quite encapsulated in the bits we’re shipping.  Sometimes this ...

Maintaining a Consistent Application State with TPL

The aim of this post is to help developers writing applications in which operations may need to be performed and then later undone due to a subsequent failure. It shows a pattern for how to maintain such a consistent application state by utilizing functionality from the Task Parallel Library (TPL) in the .NET Framework 4. For the purposes of ...

Feedback usabilla icon