I read this answer today on Stack Overflow:
to a question on parallel programming and getting as much work done as possible. The answer referenced this, very well written document from Microsoft:
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