Are deadlocks still possible with await?

Developers familiar with parallel programming are also familiar with a wide range of potential problems that can occur when practicing the art.  One of the most well-known issues is “deadlock,” where two or more operations are waiting on each other to complete in a manner such that none of them will be able to complete…. Read more

Await, and UI, and deadlocks! Oh my!

It’s been awesome seeing the level of interest developers have had for the Async CTP and how much usage it’s getting.  Of course, with any new technology there are bound to be some hiccups.  One issue I’ve seen arise now multiple times is developers accidentally deadlocking their application by blocking their UI thread, so I… Read more

Achieving Speedups with Small Parallel Loop Bodies

The Parallel class represents a significant advancement in parallelizing managed loops.  For many common scenarios, it just works, resulting in terrific speedups.  However, while ideally Parallel.For could be all things to all people, such things rarely work out, and we’ve had to prioritize certain scenarios over others. One area Parallel.For may fall a bit short… Read more

Getting random numbers in a thread-safe way

It’s very common in a parallel application to need random numbers for this or that operation.  For situations where random numbers don’t need to be cryptographically-strong, the System.Random class is typically a fast-enough mechanism for generating values that are good-enough.  However, effectively utilizing Random in a parallel app can be challenging in a high-performance manner…. Read more

Concurrent, Multi-core Programming on Windows and .NET

Thanks to everyone who attended our PDC pre-conference session yesterday on parallelism and concurrency!  We had a wonderful turnout at the event, and David, Joe, and I all had a terrific time. Attached to this post are the slides we presented. (It turns out that the PDC site does allow you to submit an evaluation… Read more

Feedback requested: TaskManager shutdown, Fair scheduling

One of the primary reasons we’ve released CTPs of Parallel Extensions is to solicit feedback on the design and functionality it provides.  Does it provide all of the APIs you need to get your job done?  Are there scenarios you wished the APIs supported and that you need to work around in klunky ways?  And… Read more

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… Read more

Parallel loop performance

We’ve received several questions on the MSDN Forums for Parallel Extensions about the performance of the Parallel class, and specifically of the loop constructs we provided in the CTP.  We’re very much aware that the performance of Parallel.For/ForEach in the CTP is not optimal, and that for some situations, the overhead for these constructs will… Read more

Ordering the output of parallel computations

Frequently when attempting to do multiple operations in parallel, ordering becomes an issue.  Consider an application where I’m rendering and writing out to a video file frames of a movie: for (int i = 0; i < numberOfFrames; i++){    var frame = GenerateFrame(i);    WriteToMovie(frame);} For a bit of pizzazz, I’ll show the same thing with… Read more

Task Parallel Library on Channel 9

Charles from Channel 9 sat down with several of us from the Parallel Computing Platform team to discuss the Task Parallel Library component of Parallel Extensions. A video of the conversation is now available on Channel9: We hope you like it, and as always, feedback is welcome and appreciated!… Read more