I'm trying to practice some C++ and I wrote a simple queue to solve the Producer-Consumer Problem.class Queue{public:Queue() : mutex(), cv(), queue(), process(true), consumer(&Queue::dequeue, this){}~Queue(){    process = false;    consumer.join();}void enqueue(int i){    std::lock_guard<std::mutex> lock(mutex);    queue.push(i);    cv.notify_all();}void dequeue(){    while(process)    {        std::unique_lock<std::mutex> lock(mutex);        while(queue.empty())        {            cv.wait(lock);        }        if(!process)        {            break;        }        int i = queue.front();        queue.pop();        std::cout << Got  << i << '\n';    }}private:std::mutex mutex;std::condition_variable cv;std::queue<int> queue;bool process;std::thread consumer;};Is my implementation good? Is there anything I could've done better?
Producer consumer in C++11
c++;c++11;producer consumer