threadA owns a shared_lock on the mutex,
threadB tries to get a unique lock on the mutex and blocks,
threadC tries to get a shared_lock on the mutex and blocks also!!

I guess there is a LIFO kind of stack serving the mutex to the requesting locks. But what happens if threadA depends on threadC in order to complete and release the lock?I n this case I have got a deadlock. Is this a design flow of my app or boost?