Visual Studio Async CTP: A Few More Things

Thursday, October 28, 2010

I gave a couple of examples in my previous post which demonstrate, IMHO, how async methods can simplify existing approaches to asynchrony in C# programs. Both examples were fairly simple in that they didn’t involve cancellation, progress reporting, UI thread dispatching, or exception handling. I’m happy to report that accomplishing these objectives is as easy as doing nothing else than what we’ve already seen. This is a result of a fairly sophisticated C# rewriting process that the compiler applies to async methods, not unlike the rewriting process applied to iterator blocks (“yield return” and “yield break”). For...
no comments

Visual Studio Async CTP: The C# Perspective

During today’s PDC session on the future of C# and VB, Anders Hejlsberg announced the availability of the Visual Studio Async CTP, implementing a set of changes to the C# language that support a new pattern for asynchronous programming. There’s lots to be said about the language support and the framework implementation that enables it, and the CTP is not the final words that will be said. There’s a comprehensive set of samples you can find at the MSDN Code Gallery, and I strongly suggest that you download the CTP and run some of these samples today. ...
one comment

MSDN Event: Parallelism in Visual Studio 2010 – Redux

Sunday, August 22, 2010

Almost a year ago, I delivered an MSDN Event on Parallel Programming in Visual Studio 2010. At the time, I used the Visual Studio 2010 Beta 1 but the demos worked fairly well. Today, I delivered another version of the same talk, with only minor modifications. The difference is just that Visual Studio 2010 is out, and we’re talking about a mature framework which you should be using in your concurrent applications today. You can download the demos (which haven’t changed :-)) and slides from here. I mentioned several resources during the session which...
no comments

DevAcademy4 Session: Watch the Video and Download the Slides and Demos

Saturday, March 27, 2010

I promised you that my DevAcademy4 session will be recorded and available online shortly after the conference. Well, the conference was a blast, and the video recording, slides, and demos are all available online. Everyone who had to stand me for over 60 minutes in the packed session hall—thanks a lot for coming, and I hope you had fun! If there’s anything at all that you would like to follow up on, feel free to use the contact form. It might take a while before the materials are available at the official Microsoft DevAcademy4 website, so in...
no comments

DevAcademy4 Session: Parallel Programming in .NET 4 and Visual Studio 2010

Saturday, March 20, 2010

Sorry for the late announcement, but on Monday I’m going to present a session called Parallel Programming in .NET 4 and Visual Studio 2010 at the Microsoft Developer Academy 4 (Avenue, Airport City). There are six (!) Sela speakers at the conference: Gil Fink, Alex Golesh, Shai Raiten, Alon Fliess, Noam King, and yours truly—and I’m sure they are going to rock, so take a look at the conference schedule to see which sessions you want to attend. I wouldn’t want to ruin the fun for the ones who are planning to come to my talk, but...

SDP 2009: Parallel Programming with .NET 4.0 and Visual Studio 2010

Saturday, January 2, 2010

A few days ago, at the Sela Developer Practice, Eran and I delivered a session titled “Parallel Programming with .NET 4.0 and Visual Studio 2010”. In this session we wanted to highlight the new features for parallel programming in .NET 4.0 – the Task Parallel Library and PLINQ – as well as the new Visual Studio 2010 features in the debugging and profiling areas. We started with what we call explicit parallelism – manually creating tasks and specifying what to do when they execute and when they complete. We used tasks to show some neat design...
no comments

Fairness is Highly Overrated

Thursday, December 31, 2009

Fairness with respect to synchronization mechanisms is a highly overrated property. When I talk about concurrency, parallelism, Windows synchronization and similar subjects, I’m often asked whether the specific algorithm, mechanism or feature is fair in some respect. First, let’s define fairness. I’ll use a simplistic yet rigorous definition to define a fair lock. (Other synchronization mechanisms may have fairness defined in a similar fashion.) To begin with, a lock is exactly what you think it is – a mechanism for specifying mutual exclusion. Given N threads that attempt to acquire the lock concurrently, only one thread may enter...
no comments

PDC 2009 Day 3: DirectCompute: Capturing the Teraflop

Thursday, November 19, 2009

Chas Boyd’s session on DirectX11 DirectCompute is going to focus on bringing the power of the GPU for general-purpose computing (and not necessarily graphics applications). A modern CPU would have 4 cores, run at 3GHz, 4 float-wide SIMDs, peak theoretical performance of 48-96GFlops, 2x hyperthreaded capability, 64KB L1 cache, a memory interface of about 20GB/s, and take about 200W out of the wall at a cost of about $200. A GPU is usually constructed from 32 cores, each 32-float wide, at 1GHz, giving us about 1Teraflop (with high-end ones giving much more), 32x hyperthreading, and a very...
one comment

PDC 2009 Day 3: Developing Applications for Scale-Up Servers Running Windows Server 2008 R2

Pedro Teixeira is going to talk about processes and threads in systems with more than 64 logical processors as well as user-mode scheduling. Surprisingly for some people, NUMA is not an esoteric hardware architecture. Even high-end gaming rigs today are NUMA; Pedro is going to use a loaned machine by HP that has 256 processors with 1TB of physical memory. Processor Groups Adding support for more than 64 logical processors required a breaking app compat change, because CPU masks were represented in Windows by a bitmask. Therefore, CPUs are now addressed by 64-processor groups...
no comments

PDC 2009 Day 3: Lighting Up Windows Server 2008 R2 Using the ConcRT on UMS

Dana Groff, Senior Program Manager on the ConcRT team is going to talk about the new Concurrency Runtime – an abstraction on top of the underlying operating system, supported from Windows XP through Windows Server 2008 R2. The ConcRT Resource Manager is an abstraction over the hardware that allows vendors like Microsoft and Intel (OpenMP, TBB) to program at a higher layer and compose these platforms, as well as coming up with one set of concepts for providing parallel code such as tasks, task groups and so forth. Dana uses a high-end AMD server with 48 cores (eight six-core processors, with...
no comments