Parallel programming is difficult. No surprises there really. I came across a great slide deck discussing some of the issues in detail. A portion of the deck does a great job of using the Cognitive Dimensions framework to analyse various language constructs. Well worth looking at.