MultiThreading 1. Producer consumer solution using condition_variable in C++2. Producer consumer solution using counting semaphore in C++