直接上代码!!!
```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";
}