A few weeks back I recorded a discussion with the infamous Erik Meijer and Charles from Channel9.
Perspectives on Concurrent Programming and Parallelism http://channel9.msdn.com/shows/Going+Deep/Joe-Duffy-Perspectives-on-Concurrent-Programming-and-Parallelism/
In it, I show my cards a bit more than intuition says I should. I’m not good at poker.
To summarize:
Mostly functional (purity + immutability) is a great default.
Safe, determinstic mutability (a la runST) is a must-have for cognitive familiarity.
Isolation is key to achieve the former; type systems can help (a lot).
Actors, agents, forkIO,
Transactions can help around the edges.
I’m working on a few papers for public consumption this year where I espouse these ideas. Keep watching for more detail.