I previously posted in November about a paper I’d written on patterns for parallel programming. The original paper had over 200 snippets of C# code to demonstrate and exemplify the ideas being discussed. Due to popular demand (and in honor of the many Visual Basic MVPs on campus this week for the MVP Summit),
We’re hiring! If you’re reading this post, you most likely have an interest in parallel or distributed computing, writing concurrent software, and the like. Take that interest a step further, and help us make the manycore era a successful reality by coming to work on the Parallel Computing Platform team at Microsoft.
The new parallelization support in the .NET Framework 4 is implemented purely in libraries and the runtime and does not require special compiler support. Therefore, it is available to all compliant .NET languages. This includes all of the managed languages that ship as part of Visual Studio 2010 (Visual C#,
The F# team has released the F# PowerPack for download on CodePlex, and we’re very excited that the PowerPack now has direct support for PLINQ. From the CodePlex site:
F# Parallel LINQ IntegrationFSharp.PowerPack.Parallel.dll provides an F#-style API for parallel operations on sequences that are part of .NET 4.0 as System.Linq.ParallelEnumerable class.
Reed Copsey, Jr. has been writing a great series of articles on parallelism with the .NET Framework 4. The articles provide the insights of an expert developer who has been using parallelism with .NET to speed up real-world programs. Recommended reading.
Parallelism in .NET
Part 1, Decomposition
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.
ASP.NET applications already get a lot of concurrency for free. The .NET Framework load balances incoming requests among ThreadPool worker threads, striving for optimal use of available CPUs. As long as you minimize blocking in your ASP.NET page code, ASP.NET will process requests concurrently.
Igor Ostrovsky is a developer on the Parallel Extensions team. On his blog, he’s documented a great set of examples for how caches can affect application performance; this is important to think through when writing parallel applications, but as Igor demonstrates,
Are you using Parallel LINQ (PLINQ), the Task Parallel Library (TPL), or any of the new coordination and synchronization primitives in .NET 4 (or in the Parallel Extensions June 2008 CTP or with the recent Reactive Extensions release)? Are you planning to use or are you already using this support in a production application or library?
Several months ago, Microsoft announced for academic customers the availability of DryadLINQ. DryadLINQ is a LINQ provider developed by Microsoft Research that enables .NET developers to use the LINQ programming model for writing distributed queries and computations against a cluster of computers using Windows HPC Server.