A good starting point for learning Pthread programming is the book:

"Programming with POSIX Threads", by David R. Butenhof.

I especially like this book because it discusses a lot of the practical issues you run into with multithreaded programming. One of the points Butemhof makes is to never simply assume that a thread will arrive a certain point in the code before something else happens in another thread. This is one of the more non-intuitive concepts in writing parallel code.