C++ Multithreading : Part 5 - Using Condition Variables for concurrency - light weight using C++11