- Solution
The solution to designing a ping pong game using the concepts of multithreading is explained in this lesson.
We'll cover the following...
Solution
Press + to interact
// conditionVariablePingPong.cpp#include <condition_variable>#include <iostream>#include <thread>#include <atomic>bool dataReady= false;std::mutex mutex_;std::condition_variable condVar1;std::condition_variable condVar2;std::atomic<int> counter{};int COUNTLIMIT=50;void setTrue(){while(counter <= COUNTLIMIT){std::unique_lock<std::mutex> lck(mutex_);condVar1.wait(lck, []{return dataReady == false;});dataReady= true;++counter;std::cout << dataReady << std::endl;condVar2.notify_one();}}void setFalse(){while(counter < COUNTLIMIT){std::unique_lock<std::mutex> lck(mutex_);condVar2.wait(lck, []{return dataReady == true;});dataReady= false;std::cout << dataReady << std::endl;condVar1.notify_one();}}int main(){std::cout << std::boolalpha << std::endl;std::cout << "Begin: " << dataReady << std::endl;std::thread t1(setTrue);std::thread t2(setFalse);t1.join();t2.join();dataReady= false;std::cout << "End: " << dataReady << std::endl;std::cout << std::endl;}