C# memory model articles

Igor Ostrovsky is one of the minds behind the parallel programming support in the .NET Framework.  Igor’s recently written a great set of articles for MSDN Magazine to cover “The C# Memory Model in Theory and Practice“.  Part 1 is available now in the December 2012 issue, and it’s a great read…. Read more

New articles on async/await in MSDN Magazine

The October 2011 issue of MSDN Magazine is now available online.  In it, you can find three articles about the new async/await features of C# and Visual Basic.  While the articles can stand alone, they were written with each other in mind in order to provide a 1-2-3 on-ramp into the world of asynchronous programming… Read more

Using Cancellation Support in .NET Framework 4

The .NET Framework 4 introduces a new mechanism for cancellation of operations, based on new types CancellationToken and CancellationTokenSource. This cancellation mechanism is used across the parallel programming libraries: tasks, concurrent collections, and PLINQ queries. Using Cancellation Support in .NET Framework 4, written by Mike Liddell, is an in-depth exploration of CancellationToken and CancellationTokenSource, how to make… Read more

PLINQ and Office Add-ins

Many different kinds of applications can benefit from multi-core parallelism, including add-ins to Microsoft Office. Donny Amalo wrote a paper, PLINQ and Office Add-ins, where he demonstrates how to implement two parallel Microsoft Office add-ins using PLINQ: A parallel Monte Carlo simulation add-in for Excel A parallel custom spell checker add-in for Word (This paper and many more… Read more

Integrating Parallelism with Windows Workflow Foundation

Despite the similarity in naming, the System.Threading.Tasks.Parallel class and the System.Activities.Statements.Parallel* activities in WF4 are largely orthogonal in the scenarios they address. However, WF4 activities and the new parallel programming types in .NET 4 can be used together to great advantage. Ling Wo and Cristina Manu wrote a paper, Integrating Parallelism with Windows Workflow Foundation in… Read more

Concurrency Visualizer: A Case Study

Boby George and Pooja Nagpal – testers on the Parallel Computing Platform team responsible for the parallel programming support in .NET 4- built a parallel spell checker algorithm and used the Concurrency Visualizer to analyze and improve the performance and scalability of their implementation. Optimizing Parallel Applications Using Concurrency Visualizer: A Case Study demonstrates how the… Read more

PLINQ’s Ordering Model

In order to execute parallel queries as efficiently as possible, Parallel LINQ (PLINQ) treats ordering as optional. By default, PLINQ considers sequences to be unordered, unless the user explicitly opts into maintaining ordering using either the AsOrdered or the OrderBy operator. Roy Patrick Tan wrote a detailed article that explains the precise ordering guarantees made by PLINQ for various… Read more

Performance of Concurrent Collections in .NET 4

.NET 4 introduces new data structures designed to simplify thread-safe access to shared data, and to increase the performance and scalability of multi-threaded applications. To best take advantage of these data structures, it helps to understand their performance characteristics in different scenarios. Chunyan Song, Emad Omara and Mike Liddell measured the performance of four new… Read more

When To Use Parallel.ForEach and When to Use PLINQ

If you’ve played around with PLINQ and Parallel.ForEach loops in .NET 4, you may have noticed that many PLINQ queries can be rewritten as parallel loops, and also many parallel loops can be rewritten as PLINQ queries. However, both parallel loops and PLINQ have distinct advantages in different situations. When writing parallel code, it helps to understand these differences to appropriately… Read more