I read this answer today on Stack Overflow:
http://stackoverflow.com/a/8071784/2387067
to a question on parallel programming and getting as much work done as possible. The answer referenced this, very well written document from Microsoft:
http://www.microsoft.com/download/en/details.aspx?id=19222
In it, they describe the fundamental problems encountered in parallel programming, how they are solved and why they are solved the way they suggest. Really good, useful read.
Stephen Toub has some good books. Here’s one
http://amzn.to/14p6Hwx