#include <iostream>
#include <thread>
#include <mutex>
using namespace std;
std::mutex mymutex;
std::condition_variable cond;
int money;
void thread1()
{
while (1)
{
std::unique_lock<std::mutex> mylock(mymutex);
while (money > 0)
{
cond.wait(mylock);
}
if (money == 0)
{
money += 200;
printf("money = %d\n", money);
}
mylock.unlock();
}
}
int main()
{
std::thread t1(thread1);
money = 1000;
while (1)
{
std::unique_lock<std::mutex> mylock(mymutex);
if (money > 0)
{
money -= 100;
printf("money = %d\n", money);
}
mylock.unlock();
if (money == 0)
{
cond.notify_one();
}
}
return 0;
}