.NET Parallel Programming

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

Presentation on TPL Dataflow in financial applications

Matt Davey from Lab49 presented at the Waters North American Trading Architecture Summit April 2011 on using TPL Dataflow in trading solutions.  You can see his slide deck at http://www.slideshare.net/mattdotdavey/waters-north-american-trading-architecture-summit-april-2011. It's awesome to see the technology being used effectively to ...

TPL Dataflow CTP Refresh

Today, we released a new CTP of TPL Dataflow, otherwise known as System.Threading.Tasks.Dataflow.dll.  You can download this as part of the Microsoft Visual Studio Async CTP, which will also install the new C#/Visual Basic support for writing asynchronous methods, or you can install the DLL itself through the installer available on the ...

Little-known gems: Atomic conditional removals from ConcurrentDictionary

ConcurrentDictionary<TKey,TValue>, first introduced in .NET 4, is an efficient dictionary data structure that enables thread-safe reading and writing, meaning that multiple threads may all be accessing the dictionary at the same time without corrupting it.  It supports adding through its TryAdd method, conditional updates through ...

TPL Dataflow on TC Labs

After releasing a CTP of TPL Dataflow as part of the Async CTP, we had multiple requests for a standalone download for just the System.Threading.Tasks.Dataflow.dll.  Thanks to everyone who asked for this, and as of this morning, such an installer for an updated version of the preview is now available!  This is part of a ...

Parallel Computing Virtual Labs on MSDN

Interested in trying out the support for parallel computing in Visual Studio 2010 or .NET 4, but don’t have either installed?  No problem.  You can now use the MSDN Virtual Labs site to try these out from the comforts of your favorite browser (that supports ActiveX).  Multiple labs are available: Enjoy...

AsyncLazy

A question I’ve seen come up from time to time is “Why doesn’t Lazy<T> support asynchronous initialization?”  It’s a fair question.  After all, if you’re using Lazy<T> because you have an expensive resource you want to delay the creation of until it’s absolutely needed, it’s...

await anything;

One of the very cool things about the new await keyword in C# and Visual Basic is that it’s pattern based.  It works great with Task and Task<TResult>, and awaiting those two types will represent the vast majority of uses, but they’re by no means the only types that can be awaited.  The languages support awaiting ...

Interested in working on Technical Computing? We’re hiring!

The Parallel Computing Platform team is part of a larger organization at Microsoft focused on technical computing, which as Wikipedia describes it “is the application of the mathematical and computational principles of scientific computing to solve practical problems of industrial interest.”  Suffice it to say that there are a...