#include <iostream>
#include <thread>
#include <condition_variable>
#include <mutex>
using namespace std;
mutex mtx;
condition_variable cv;
#define MAX_NUM 10
int x=1;
int evennum()
{
while(true)
{
unique_lock<mutex> ul(mtx);
cv.wait(ul, [](){
return (x<=MAX_NUM) && (x%2==0);
});
cout<<"even num is "<<x<<endl;
x++;
ul.unlock();
cv.notify_one();
}
}
int oddnum()
{
while(true)
{
unique_lock<mutex> ul(mtx);
cv.wait(ul, [](){
return (x<=MAX_NUM) && (x%2!=0);
});
cout<<"odd num is "<<x<<endl;
x++;
ul.unlock();
cv.notify_one();
}
}
int main() {
thread t1(evennum);
thread t2(oddnum);
t1.join();
t2.join();
return 0;
}
/*
void evennum()
{
while(true)
{
unique_lock<mutex> ul(mtx);
cv.wait(ul, [](){
return (x%2==0);
});
if(x>MAX_NUM)
{
cv.notify_one();
return;
}
cout<<"even num is "<<x<<endl;
x++;
ul.unlock();
cv.notify_one();
}
}
void oddnum()
{
while(true)
{
unique_lock<mutex> ul(mtx);
cv.wait(ul, [](){
return (x%2!=0);
});
if(x>MAX_NUM)
{
cv.notify_one();
return;
}
cout<<"odd num is "<<x<<endl;
x++;
ul.unlock();
cv.notify_one();
}
}
*/
To embed this project on your website, copy the following code and paste it into your website's HTML: