Hi everyone, I am trying to use shared_mutex with unique_lock but my program blocks. I am using boost 1.35. My compiler is MSVC 8.0.50727.762 and my OS is Windows 2000. Here is a minimal code to reproduce the problem: #include "boost/thread.hpp" #include "boost/thread/shared_mutex.hpp" #include "boost/bind.hpp" class Executor { public: void run() { boost::unique_lockboost::shared_mutex lock(theMutex); boost::thread::sleep(boost::get_system_time() + boost::posix_time::millisec(30)); } private: boost::shared_mutex theMutex; }; void main() { Executor ex; boost::thread_group group; for(int i=0; i<200; i++) { group.create_thread(boost::bind(&Executor::run, &ex)); } group.join_all(); } The program blocks during the call of group.join_all(). According to the Boost.Thread documentation, unique_lockboost::shared_mutex lock(theMutex) acquires exclusive ownership of theMutex. Therefore, I expect that the behaviour of boost::unique_lockboost::shared_mutex lock(theMutex); is the same as if a boost::mutex is used. Is my assumption correct or am I missing something? Thank you for any help you can provide, Stanislav