Are there any counted semaphores in Linux?
What I'm wanting to do is keep track of how many readers a resource has.
You might also consider the Boost C++ Libraries. Boost has a bunch of different threading and synchronization related components, including an abstraction for semaphores, and also a good implementation of the ReaderWriterLock. Check out this SO post, regarding Boost ReaderWriterLock.