Глобальные переменные обычно не одобряются.
Поскольку в C ++ нет мьютекса-владельца, лучше всего иметь атрибут члена
mutable позволяет изменять его, даже если ваш this
is const
class Processor {
std::queue<int> q;
mutable std::mutex mtx;
void q_processing_thread(); // while true loop - uses the mutex
public:
void notify(int); // pushes int to q - uses the mutex
bool isEmpty() const; // checks if the queue is empty - uses the mutex
};
Блокировка, как только вам понадобится мьютекс, предпочтительно через std :: lock_guard или scoped_lock.
Не держите его заблокированным больше, чем это необходимо, так как может вызвать проблемы с производительностью