Condition class provides communication, the ability to wait for some shared resource to reach some desired state, or to signal that it has reached some state in which another thread may be interested
This template class employs a C++ idiom (described by Bjarne Stroustrup) that uses the constructor to acquire a resource automatically when an object of the class is created and uses the destructor to release the resource automatically when it goes out of scope