Ditto, via David Butenhof's excellent book _Programming with Posix Threads_. I didn't know what a mutex or condition variable was before I read that book.
I still have that book on my shelf.
Woah, it is that old! Been some time. Now I feel old.
Lives on my prime shelf space, along with TAOCP and the Stevens books.
I was going to comment the exact same thing. I have fond memories of learning about parallelism in university and using pThreads. It was such a mind-blowing and novel thing at the time when all I had been exposed to was sequential single threaded programming.