.NET Parallel Programming

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

Implementing a simple ForEachAsync, part 2
Implementing a simple ForEachAsync, part 2
After my previous post, I received several emails and comments from folks asking why I chose to implement ForEachAsync the way I did.  My goal with that post wasn’t to prescribe a particular approach to iteration, but rather to answer a question I’d received… obviously, however, I didn’t provide enough background...
Implementing a simple ForEachAsync
Implementing a simple ForEachAsync
Jon Skeet recently asked me how I might go about implementing the following “asynchronous ForEach” behavior: Given what we now know about SemaphoreSlim from my previous post, here’s one way to achieve this: public static Task ForEachAsync<TSource, TResult>(     this IEnumerable<TSource...
What’s New for Parallelism in .NET 4.5 Beta
What’s New for Parallelism in .NET 4.5 Beta
At //BUILD/ in September, we blogged about the wealth of new support available for parallelism in the .NET Framework 4.5 Developer Preview.  Since then, we’ve been hard at work on the .NET 4.5 Beta.  With the beta just released, here are a few interesting and related things that are new or have changed since the Developer ...
Building Async Coordination Primitives, Part 6: AsyncLock
Building Async Coordination Primitives, Part 6: AsyncLock
Last time, we looked at building an AsyncSemaphore.  Here, we’ll look at building support for an async mutual exclusion mechanism that supports scoping via ‘using’.As mentioned in the previous post, semaphores are great for throttling and resource management.  You can give a semaphore an initial count of the number ...