I am working in legacy code and I have a list collection of pointers that is accessed by multiple threads. I am having some thread locking issues with it. Mostly the list is read and very few changes (adds or deletes) are made to the list. I thought this would be a great opportunity to use a Reader Writer Lock (RWL). It seems that the shared_mutex is the Boost RWL. There are a few requirements that I am not sure shared_mutex will do for me: 1. There could be nested locks and the RWL should handle unwinding them correctly. I see that recursive_mutex seems to handle that. Does shared_mutex handle that as well? 2. Is there a way to give a higher priority to writes? I am worried about the readers starving the writers, so I would like any pending writers to be given preference over pending readers. How can I get this functionality from the Boost thread library? If I need to build my own, what class do you recommend using as a base to build from?