直接上代码!!!
```cpp
#include <cstdio>
#include<iostream>
#include<mutex>
#include<condition_variable>
#include<queue>
using namespace std;
class A
{
private:
mutex mu;
condition_variable cv;
mutex mu1;
condition_variable cv1;
bool flag = true;
int num = 10;
queue<int> que;
public:
void writeFun()
{
for (int i = 0;i < 10;++i)
{
unique_lock<mutex> lock(mu);
cv.wait(lock, [this] {return que.empty() == true;});
cout << "正在写入队列一个数字" << endl;
que.push(i);
cv.notify_one();
}
}
void readFun()
{
for (int i = 0;i < 10;++i)
{
unique_lock<mutex> lock(mu);
cv.wait(lock, [this] {
return que.empty()==false;
}
);
cout << "正在读取队列一个数字" << que.front() << endl;
que.pop();
cv.notify_one();
}
}
void printA()
{
while (num--)
{
unique_lock<mutex> lk(mu1);
cv1.wait(lk, [this]() {return flag;});
cout << "A" << endl;
flag =false;
cv1.notify_one();
}
}
void printB()
{
while (num--)
{
unique_lock<mutex> lk(mu1);
cv1.wait(lk, [this]() {return !flag;});
cout << "B" << endl;
flag =true;
cv1.notify_one();
}
}
};
int main()
{
A a;
thread thread1(&A::printA, ref(a));
thread thread2(&A::printB, ref(a));
thread1.join();
thread2.join();
std::cout << "Hello World!\n";
}