.NET Parallel Programming

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

Fork/Join parallelism with .NET CountdownEvent

A common asynchronous pattern in code today is the pattern known as fork/join parallelism. This typically manifests by starting n pieces of work and later joining with that work. The existing set of the .NET synchronization primitives does not offer a simple solution for handling this common scenario. It can be achieved, for example, by using...
Comments are closed.0 0

Coordination Data Structures Overview

The June 2008 CTP of Parallel Extensions provides the first look at its 3rd major piece, a set of coordination data structures we lovably refer to as CDS. It contains lightweight and scalable thread-safe data structures and synchronization primitives.  There are of course already many synchronization primitives present in the System....

Introducing ConcurrentStack

A common problem users run into when writing parallel applications is the lack of the thread-safety support in the .NET collection classes. Users typically need to implement their own synchronization mechanism for achieving the goal of safely reading/writing data to the same shared collection. A largely deprecated solution was to use the ...
Comments are closed.0 0

PLINQ Ordering

There is a natural tension between ordering and performance in a parallel partitioning system such as PLINQ, which we addressed as guidance in the Dec07 CTP documentation:  “Although you can opt into ordering, this does come at a cost to performance because it constrains the options which PLINQ can use for executing a query, so it ...

Image Colorizer Sample in the June 2008 CTP

Continuing the tour of the samples included in the Parallel Extensions June 2008 CTP, we now turn our attention to the "Image Colorizer" application.   This sample uses the following constructs from Parallel Extensions: System.Threading.Parallel.For() and also the following from the standard .NET libraries: System.ComponentModel....

Announcing the “Parallel Programming in Native Code” Blog

Our colleagues working on native concurrency have just launched the Parallel Programming in Native Code blog.  We’re all on the same team and work really closely to ensure that the right programming models are exposed both for managed and native consumers, so you will be able to use your language of choice. Here’s a ...
Comments are closed.0 0
C++

More Channel 9 Parallel Extensions Goodness

Charles from Channel 9 came over to building 112 last week for an in-depth look at what's new in the June 2008 CTP of Parallel Extensions.  We spoke on the subject for an hour and a half or so, which you can see in a two-part series that was posted to Channel 9 yesterday (by the way, Channel 9 team, the new site looks great!): What...

Mandelbrot in Parallel with C++/CLI

Since the release of the December 2007 CTP of Parallel Extensions, we've received several questions about whether Parallel Extensions can be used from C++/CLI.  In short, yes, it can! (It can be used with any .NET language, one of the beauties of this functionality being provided through a library.)  To demonstrate, we included in ...

More Powerful Aggregations in PLINQ

In the June 2008 CTP, PLINQ aggregations are more powerful than they were in the December 2007 CTP. The reason why they are more powerful is a bit subtle, but this new power enables many useful scenarios, so it is worth it to follow along with the explanation.To understand where the difference is coming from, let’s quickly review how ...
Comments are closed.0 0