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.