cpp/thread/scoped lock

The class is a mutex wrapper that provides a convenient RAII-style mechanism for owning zero or more mutexes for the duration of a scoped block.

When a object is created, it attempts to take ownership of the mutexes it is given. When control leaves the scope in which the object was created, the  is destructed and the mutexes are released. If several mutexes are given, deadlock avoidance algorithm is used as if by std.

The class is non-copyable.