
2013/2/20 Vicente J. Botet Escriba <vicente.botet@wanadoo.fr>:
Fredrik Orderud is working on a templated version (See [Threads-devel] Extend shared_mutex with support for priority policies?) "shared_pri_mutex" with support for the following prioritization policies: UNSPECIFIED_PRIORITY, EXCLUSIVE_PRIORITY and SHARED_PRIORITY."
IIUC, your approach is dynamic, that is, it the user that choose the priority while locking, while IIRC his approach is static, that is, the priority is given by the type of mutex, preserving in this way the boost::shared_mutex interface.
You are right, Fredrik Orderuds solution is better because it does not break existing interface. It is incapable of making multiple lock queues of different priorities: shared_lock_prioritized<10> lock; // thread #1 // Lock with minimal priority lock.lock(); // thread #2 lock.lock(5); // thread #3 // Will acquire lock before #2, // if #2 did not already acquire lock lock.lock(6); However user usually do not need such functionality, so it does not worth breaking API. -- Best regards, Antony Polukhin