Class that models Mutex Concept that is fair and scalable.
queuing_mutex models the Mutex Concept. A
queuing_mutex is scalable, in the sense that if a thread has to
wait to acquire the mutex, it spins on its own local cache line. A
queuing_mutex is fair. Threads acquire a lock on a mutex in the
order that they request it. A
queuing_mutex is not recursive.
The current implementation does busy-waiting, so using a
queuing_mutex may degrade system performance if the wait is long.